3

プログラムでメールに添付ファイルを送信しようとしています。添付ファイルは私のdbファイルです。DBファイルがSDカード上にあるときにそれを行うことができましたが、それが内部にあるとき、ファイルが見つからないと不平を言い続けます

これが私のコードです:

    String path = "/data/data/MyPackageName/databases/mydb.db"
    Intent email = new Intent(android.content.Intent.ACTION_SEND);

    email.setType("plain/text");
    email.putExtra(android.content.Intent.EXTRA_SUBJECT, title);
    email.putExtra(android.content.Intent.EXTRA_TEXT, "Hiii");

    email.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + path));

このパスで機​​能しない理由はありますか?何かが足りないのですか、それとも添付ファイルは外部ストレージ上のファイルに対してのみ機能しますか?

4

1 に答える 1

4

それは正しい振る舞いです。このファイルはアプリケーションのプライベートストレージにあり、他のプロセスからアクセスすることはできません。最初にそれを外部ストレージにコピーするか、コンテンツプロバイダーを実装してファイル記述子を渡す必要があります。

ファイルにContentProviderを実装する方法の優れた例については、このプロジェクトを参照してください。

于 2013-02-01T04:38:34.923 に答える