java.lang.Classcastexception-Fehler: java.io.Datei kann nicht gewirkt werden, um android.os.Parcelable
Ich versuche, erstellen text-Datei und teilen es (per Bluetooth, E-Mail..)
File file = null;
try {
file = createFile2(json);
} catch (IOException e) {
e.printStackTrace();
}
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, file);
shareIntent.setType(getString(R.string.share_contact_type_intent));
Hier ist die createFile2() Spaß:
public File createFile2(String text) throws IOException {
File file = new
File(getFilesDir() + File.separator + "MyFile.txt");
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));
bufferedWriter.write(text);
bufferedWriter.close();
return file;
}
Logcat:
Bundle﹕ Key android.intent.extra.STREAM expected Parcelable but value was a java.io.File. The default value <null> was returned.
Bundle﹕ Attempt to cast generated internal exception:
java.lang.ClassCastException: java.io.File cannot be cast to android.os.Parcelable
at android.os.Bundle.getParcelable(Bundle.java:1212)
at android.content.Intent.getParcelableExtra(Intent.java:4652)
at android.content.Intent.migrateExtraStreamToClipData(Intent.java:7235)
at android.content.Intent.migrateExtraStreamToClipData(Intent.java:7219)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417)
at android.app.Activity.startActivityForResult(Activity.java:3424)
at android.app.Activity.startActivityForResult(Activity.java:3385)
- log cat bitte.
- putExtra ist nicht definiert für die Datei, die die [Doc](developer.android.com/reference/android/content/..., android.os.Bundle -))
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beim ausfüllen der
EXTRA_STREAM
für eineACTION_SEND
Vorsatz müssen Sie dieUri
für die Ressource, nicht dieFile
Objekt selbst.Als für die Ausnahme: während Sie im Allgemeinen in kann setzen Sie ein
File
- Objekt als Teil der erweiterten Daten einesIntent
(da es implementiertSerializable
), der Empfänger erwartet eineParcelable
Instanz fürEXTRA_STREAM
, dieFile
nicht.android.net.Uri
, das ist einParcelable
und nichtjava.net.URI