2017-04-10 16 views
0

私は2つのアプリケーションを持っています.1つはファイルを書き、もう1つは(Gmail)がそのファイルを添付しようとしています。しかし今、Gmailアプリケーションは、パブリックストレージパスを取得する方法は? (SDカードなし)

のエラーを返します

ファイルを添付するためのアクセス許可が拒否されました。

私はGmailアプリがエラーを与えないように、私は、ファイルを書き込むことができ/data/data/PACKAGE/files/file.txt あるプライベートディレクトリにファイルを格納していますと思いますか? ファイルを添付しています。

String filelocation = "/data/data/com.example.xxxxxxxxx/files/file.txt"; 
Intent intent = new Intent(Intent.ACTION_SENDTO); 
intent.setType("text/plain"); 
String message="File to be shared is " + file_name + "."; 
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+filelocation)); 
intent.putExtra(Intent.EXTRA_TEXT, message); 
intent.setData(Uri.parse("mailto:[email protected]")); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
+0

@ianhanniballake私はタグを追加しましたが、 'android:name =" android.support.v4.context.FileProvider "は、 '未解決パッケージ'コンテキスト '' – Humty

+0

というエラーを返します。 'コンテクスト'。 – ianhanniballake

+0

@ianhanniballake Noe '.FileProvider'は赤です。 '未解決のクラス 'を与える​​。 – Humty

答えて

0

代わりの静的なファイルパスを使用して、私はあなたのパブリックストレージまでのあなたのディレクトリを返しますEnvironment.getExternalStorageDirectory().getAbsolutePath()を使用することをお勧めします。その後、静的パスをプライベートフォルダまで作成し、/ filename.extensionとマージすることができます。

+0

Gmailはストレージ権限を要求しないので、 'Environment.getExternalStorageDirectory()'のものにアクセスすることはできません。 – ianhanniballake

+0

@ianhanniballake親切に私を案内します。 – Humty

+0

@Humty - あなたの質問は正確な複製です。重複する質問とその答えを見てください。 – ianhanniballake

関連する問題