2017-02-28 6 views
0

Gmailのメールアプリケーションなどのアプリケーションを使って、内部キャッシュに保存されたテキストファイルを送信します。 FileProviderを追加して、ファイルへの一度のアクセス許可を与えました。Gmailの添付ファイルにFileProviderのcache-pathを使用すると、「無効な」エラーが表示される

Android 5.0搭載のデバイスでアプリを実行すると機能します。私が6.0のデバイスでそれを実行すると、失敗します。一つの失敗は例外である:アクティビティがインテント処理するために見つかりません

{行為= android.intent.action.SEND FLG = 0x3のクリップ= {ヌルT:添付ファイルをログ}(補足を有する)}

これは、intent.setDataAndType (uri, "text/plain")を省略した場合に発生します。

上記の文が含まれていると、もう1つのエラーはgmailのエラーです。それは添付ファイル名をグラフィックで表示して、それが正しくアクセスされたと信じさせてくれます。また、 "to"行には添付ファイルのパスが表示されます(基本的にuriですが、 "file:"という接頭辞がありません)。メッセージを送信しようとすると、「アドレスが無効です」というエラーメッセージが表示されます。 "to"行からこの偽のアドレスを削除すると、添付ファイルとともに正常にメッセージを送信できます。

つまり、さまざまな「セットアップ」ファイルを含む私のFileProviderの使用が機能しているようです。私は明らかに何かが間違っている、おそらくインテントの使用にあるかもしれません。ここに私のコードがあります - 偽の "to"アドレスを持つ後者のバージョン。

マニフェスト:(RES/xmlディレクトリにある)

<application 
    ... 
    <provider 
     android:name="android.support.v4.content.FileProvider" 
     android:authorities="com.myapp.file_access" 
     android:grantUriPermissions="true" 
     android:exported="false"> 
     <meta-data 
      android:name="android.support.FILE_PROVIDER_PATHS" 
      android:resource="@xml/filepaths" /> 
    </provider> 
    </application> 

がfilepaths.xml:

<?xml version="1.0" encoding="utf-8"?> 
<paths> 
    <cache-path path="./" name="files" /> 
</paths> 

意図を作成するためのコード:

public static void sendFile (Context context, String path) 
    { 
    File file = new File (path); 
    Uri uri = FileProvider.getUriForFile (context, "com.myapp.file_access", file); 

    Intent intent = new Intent (Intent.ACTION_SEND); 
    intent.putExtra (Intent.EXTRA_EMAIL, new String[] {"[email protected]"}); 
    intent.putExtra (Intent.EXTRA_SUBJECT, "your file"); 
    intent.putExtra (Intent.EXTRA_STREAM, uri); 
    intent.putExtra (Intent.EXTRA_TEXT, "file attached."); 
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
    intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 
    intent.setDataAndType (uri, "text/plain"); 
    context.startActivity (intent); 
    } 

答えて

0

ない答えはまだされているかどうかを確認してください9ヶ月後に利用可能です。

  1. データ・タイプが「メッセージ/ RFC822」でなければならない

  2. Gmailの添付ファイルのみ使用可能なファイルは、外部記憶装置「MNT /カード/ {your_file_path}」であり、他のファイル・パスは、Gmail /受信トレイアプリケーションdoes not認識
関連する問題