私は恐らく愚かな質問ですが、私は本当に答えを見つけることができません。私が作成したばかりのファイルからUriを入手してください(アンドロイド)
EditTextの内容をhtmlファイルとして保存し、他のアプリケーションと共有するためのプログラムが必要です。これを行うには、ファイルを内部ストレージに書き込んだ後、そのファイルにURIを取得する必要があります。しかし、それを行う方法についてはどこにも情報はありません。
これは私のコード(編集アクティビティの名前であることと、パッケージをMYAPP)である:
String filename = "Lorem ipsum.html";
FileOutputStream outputStream;
try {
outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
outputStream.write(Html.toHtml(textField.getText()).getBytes());
outputStream.close();
System.out.println(filename);
} catch (Exception e) {
e.printStackTrace();
}
Intent shareIntent = ShareCompat.IntentBuilder.from(Editor.this)
.setStream(FileProvider.getUriForFile(Editor.this, "com.myapp.fileprovider", new File(filename)))
.getIntent();
shareIntent.setData(FileProvider.getUriForFile(Editor.this, "com.myapp.fileprovider", new File(filename)));
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(shareIntent);
私の知る限り、ファイル作成部は、うまく動作します。例外は捕捉されません。 URIを検索しようとしたとき、私は明らかに間違って何かをやっている
java.lang.IllegalArgumentException: Failed to find configured root that contains /Lorem ipsum.html
を、私は解決策を見つけることができませんしてきた:しかし、実際の共有部分は、このエラーでクラッシュします。公式の文書に続いて助けにならなかったので、私はこの特定の問題の例を見つけることができませんでした。
それが重要ならば、ここに私のfileprovider宣言は次のとおりです。
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.myapp.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/paths" />
</provider>
は、任意の助けを事前にありがとうございます。あなたのコードで
- 私はパスが何であるか見当がつかないそれを見つける方法 – Sauron
あなたの携帯電話にあるファイルはどこですか? –
私が作成したばかりのファイルにアクセスしようとしていますが(コードを投稿して)、アプリがどこに保存しているかわかりません。 – Sauron