前提・実現したいこと
現在Android7.0でCSVファイルをPCと共有するアプリを開発しています。
共有方法としてBluetoothでの送信を検討しているのですが、上手く実装することができません。
発生している問題・エラーメッセージ
Intentを発行した後、送信対象アプリ選択ダイアログ(?)は表示されるのですが、そこで「Bluetoothで送信」を選択してもBluetoothの画面が起動しません。
試しにGmailを選択すると「ファイルを添付できませんでした」というメッセージが表示されるためCSVファイルの取得に失敗していると考えています。
該当のソースコード
送信対象のCSVファイルはAndroid内の下記のパスに保存されています。
/storage/emulated/0/Download/SampleData.csv
実際の送信処理です。
java
1String filePath = Environment.getExternalStorageDirectory().getPath() + "/Download" + "/SampleData.csv"; 2File file = new File(filePath); 3Uri sendFileURI = FileProvider.getUriForFile(m_context, getApplicationContext().getPackageName() + ".provider", file); 4Intent intent = new Intent(); 5intent.setType("text/*"); 6intent.putExtra(Intent.EXTRA_STREAM, sendFileURI); 7intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION); 8startActivity(Intent.createChooser(intent, "send file"));
res/xmlにはprovider_paths.xmlを定義しております。
provider_paths.xml
1<?xml version="1.0" encoding="utf-8"?> 2<paths xmlns:android="http://schemas.android.com/apk/res/android"> 3 <external-path name="share_download" path="Download/"/> 4</paths>
マニフェストの<application>タグ内には以下を定義しております。
provider_paths.xml
1 <provider 2 android:name="android.support.v4.content.FileProvider" 3 android:authorities="${applicationId}.provider" 4 android:exported="false" 5 android:grantUriPermissions="true"> 6 <meta-data 7 android:name="android.support.FILE_PROVIDER_PATHS" 8 android:resource="@xml/provider_paths"/> 9 </provider>
補足情報
Bluetooth側がエラーで落ちるので、このコードからエラーログの出力は確認できませんでした。
あなたの回答
tips
プレビュー