この質問は以前に投稿されましたが、私のためではなかった。ここをクリックしてください:Gmail 5.0 app fails with "Permission denied for the attachment" when it receives ACTION_SEND intent"添付ファイルのアクセスが拒否されました"(Gmail 5.0上)メールにファイルを添付しようとしています
テキストファイルにデータを構築し、テキストファイルをメールに添付して自動的に添付する必要があるアプリがあります。私はこれを接続するために多くの方法を試しました。それは明らかにGmail 4.9以下で動作しますが、5.0には私が望むことをすることを不可能にするいくつかの新しい許可機能があります。
Intent i = new Intent(Intent.ACTION_SEND);
String to = emailRecipient.getText().toString();
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL, new String[] { to });
i.putExtra(Intent.EXTRA_SUBJECT, "Pebble Accelerometer Data");
i.putExtra(Intent.EXTRA_TEXT, "Attached are files containing accelerometer data captured by SmokeBeat Pebble app.");
String[] dataPieces = fileManager.getListOfData(getApplicationContext());
for(int i2 = 0; i2 < dataPieces.length; i2++){
i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(getApplicationContext().getFilesDir() + File.separator + dataPieces[i2])));
}
i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(getApplicationContext().getFilesDir() + File.separator + fileManager.getCurrentFileName(getApplicationContext()))));
Log.e("file loc", getApplicationContext().getFilesDir() + File.separator + fileManager.getCurrentFileName(getApplicationContext()));
try {
startActivity(Intent.createChooser(i, "Send Email"));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(Main.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}
datapiecesは空はいかもしれないがループの下に現在のファイルの行は、常に信頼性が高く、常に何かを添付する。
私は私はそれが原因NULLポインタのだlogcatをチェックするとき、それは添付しますが、Gmailは、その後クラッシュし、それを行うとき
Uri.parse()
に
Uri.fromFile()
を変更しようとしています。これは、Gmailがファイルへのアクセス権を持たず、したがってnullになるためです。
私も
getCacheDir()
代わりの
getFilesDir()
を使用してみたのだが、同じ結果を有します。
私はここで間違っていますが、どのように修正する必要がありますか?いくつかのサンプルコードはとなるでしょう。本当に便利なのはです。なぜなら私はAndroidの開発には新しく、何らかのプッシュなしでやる必要があることを説明することはおそらく助けに終わらないからです。
ありがとうございます。
質問と解決策には大きな違いがあります。問題は、アプリケーションのプライベートファイルをcontext.getFiles()から共有することであり、答えでは一般的なストレージ(〜context.getExternalFilesDir())になりました...同じものではありません... – Felix
外部ストレージを搭載していない可能性があるデバイスには、一般的なソリューションがありますか?それとも今のシナリオでさえ問題なのでしょうか? – dylansturg
外部ストレージを使用して添付ファイルを保存することは、Android API 23とその新しいアクセス許可システム以降、悪い習慣になっています。実行時にWRITE_EXTERNAL_STORAGE権限をユーザーに要求しないと、失敗します。 –