常に同じファイルをGMAILに添付するプログラムがありました([作成]> [ファイルを添付]> [開く]> [マイプログラム])。常に同じファイルが選択されます。
それがしていたことは:
String path = Environment.getExternalStorageDirectory() + "/file.3gp";
File f = new File(path);
Uri data = Uri.fromFile(f);
Intent i = new Intent();
i.setData(data);
setResult(Activity.RESULT_OK, i);
finish();
これはAndroid 6.0まで正常に機能していました。現在、使用しようとすると次のエラーが表示されます。
空のファイルを添付できません
Astro File Sharingでも同じエラーが発生します(古いビルドの可能性があります)。
ただし、ES File Explorerをインストールし、同じルーチンを実行してファイルを選択すると、次のようなダイアログが表示されます。
ファイルをピックアップ
- 通常Android Way(MMS、Gmail、...の場合)
- File Way(上記が失敗した場合はこれを試してください)
「File Way」は、私のプログラムと同様に失敗します。 「通常Android Way」は正常に機能します。
誰がそれが何をするのか考えているので、複製できますか?
前もって感謝します!
OBS:すでに何度もputExtra(STREAM、path)を試しましたが、成功しませんでした。
さて、多くの調査といくつかのインテントの傍受の後、すぐに動作するようになりました。
File:///をcontent://に変更する必要がありました。
Androidからの次の情報に従ってこれを行いました。 https://developer.Android.com/reference/Android/support/v4/content/FileProvider.html
唯一の大きな変更は、/ sdcard/file.extへのハードコードされたパスを使用したことです。また、行
getUriForFile(getContext(), "com.mydomain.fileprovider", newFile);
に変更されました
Uri contentUri = FileProvider.getUriForFile(this, "com.mydomain.fileprovider", newFile);
以下も含める必要がありました。
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
i.setData(contentUri);
FileからContentに変更しなければならなかった理由はよくわかりませんが、この後、ファイルは再び添付されます!この問題に直面した場合はリンクを参照してください。作成する必要がある新しい.xmlを忘れないでください。
次の質問を参照してください。
Android-6-cannot-share-files-anymore
この動作はAndroid 6.0およびGmailで発生します。次のスレッドを参照してください。
問題3141-Android-developer-preview
[設定]-> [アプリ]-> [Gmail]-> [許可]に移動し、「ストレージ」許可を手動で有効にすると、共有が機能します。
このシナリオでは、Gmailが「ストレージ」権限を要求する必要があります。これは、過去のすべてのバージョンのAndroidと同じように機能します。
他のメールアプリは添付ファイルを正しく処理する必要があります。
修正方法は次のとおりです。
[設定]-> [アプリ]-> [Gmail]-> [許可]に移動します。[ストレージ]の許可をオンにします。これにより、問題は解決しました。
明確な答えが見つかりませんでした(SDカードを使用せずにGmailに添付ファイルを送信)。葉巻ではなく別のファイル名にコピーしようとしました。動作させる方法は、ダウンロードフォルダーにコピーしてそこから移動することでした。
これでダウンロードのパスを取得しますEnvironment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
downlaodsフォルダーへのフルパスを取得し、そこにattachemntをコピーします。 20M以上のファイルは移動しません