問題タブ [android-fileprovider]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - FileProvider を使用して内部ストレージから画像を共有する
アプリケーションの内部ストレージにいくつかのファイルが保存されており、それを外部アプリケーションで開きたい (たとえば、表示するためにギャラリーに画像を送信する)。そうするように をセットアップしましたFileProvider
。
からAndroidManifest.xml
:
からres/xml/files.xml
:
Fragment
ファイルを開こうとした場所から:
logcat の出力 (ギャラリー アプリへの共有) から:
ファイルが見つかり、URI が生成され、MIME タイプが正しく検出されます。Android からハンドラーの正確なリストを取得します。「ギャラリー」を選択すると、ギャラリー アクティビティが起動されますが、デバイス自体のギャラリーに直接移動します。エラー メッセージは表示されず、画像も開かれません。この動作は、G+ Photos などの他の画像ビューアと一致しているようです。
本当に奇妙なことは、インテント ACTION_SEND を宣言して同じコードを実行すると、ファイルが Gmail のメールに正しく添付されることです。(実際、これは私がアプリの内部ログで行っていることです。) したがって、コンテンツ URI の形式が間違っている可能性はほとんどないようです。私の最善の推測は、間違った意図アクションを使用していることですか? しかし、ACTION_VIEW より優れているものは何なのかわかりません。
何か案は?
android - ファイル プロバイダー - 独自のアプリでもファイルにアクセスできない
私はFile Providerを実装していますが、慎重にドキュメントに従いましたが、アプリ自体でファイルを使用したり、ファイルを共有したりすることはできません。
マニフェストを追加し、ディレクトリ共有用の xml ファイルを作成し、コンテンツ URI を生成し、URI パーミッションを付与し、キャッシュ、外部、内部ディレクトリでファイルを共有しようとしましたが、何も機能していません。
ネットを検索しましたが、コードに欠けているものは何も見つかりませんでした。
以下はコードです:
マニフェスト:
ファイルパス.xml
取得:
PDF ファイルにアクセスするためのコード:
画像にアクセスするコード:
自分のアプリでもこれらのファイルを使用することさえできないので、私が間違っているところを教えてください。
前もって感謝します。
java - FileProvider を使用した Android の写真共有
この引数に関するすべての回答を読みましたが、写真を受け取るアプリケーションのエラーが常に表示されます。
すべてのアプリケーションで、私にとってうまくいっ
た唯一の方法はこれでした(SDカードファイルがすべてのアプリケーションに公開されているため、機能します):
現在、プライベート フォルダーにあるファイルを共有する方法に行き詰まっています。Googleドキュメントで提供されているコードを使用しました:
これは を使用してファイルを共有するためのコードですが、FileProvider
whats up 以外のアプリケーションでは機能しません。
次のように、他のアプリケーションでエラーが発生し続けるのはなぜですか:
java.lang.SecurityException: Permission Denial: content://com.test.myapp.fileprovider/internal_cache/exported.jpg (pid=675, uid=10052) requires null
または
IllegalArgumentException: Failed to find configuration root that contains content://com.test.myapp.fileprovider/internal_cache/exported.jpg
java - Android FileProvider でファイルを削除すると NullPointerException が発生する
Android File API が正常に動作しません。
これが私が達成したいことです。完全にダウンロードされた後にローカルに保存する必要があるAmazonからビデオをダウンロードしています。私はこれを非常に簡単な方法で行っています (コードは短縮されており、重要な行のみを示しています)。
とinputStream
はfileOutputStream
インスタンス変数です。
ビデオが完全にダウンロードされた場合、これは実際にはかなりうまく機能します。その場合、すべて問題なく、後でビデオにローカルでアクセスできます。
ただし、アプリでビデオのダウンロードが中断され、キャンセルする必要がある場合があります。この場合、そこにあるが明らかに完全ではないファイルを削除したいと思います。
ファイルを削除するコードは次のとおりです。
最後の行fileProvider.delete(fileToDelete, null, null);
で がスローNullPointerException
されています。デバッグしたところ、fileProvider
が初期化されていることがわかりました。そのため、 を呼び出すために使用している URI に問題があると強く思いますがdelete
、何が問題なのかわかりません。ファイルプロバイダーを使用して適切な削除を行う方法を知っている人はいますか?
更新:これがやり過ぎではないことを願っています。現在、VideoDownloader
クラス全体を投稿しています:
別の更新:これが私のスタック トレースです。
android - Android ContentProvider 作成ファイル
と の 2 つのアプリケーションがあるFoo
としBar
ます。両方のアプリケーション用に を作成し、FileProvider
それらを で定義してManifest
、同じ署名 (つまり、同じキーストアで署名) を持つアプリケーションへのアクセスを許可しました。
私の質問は次のとおりです。insert(Uri uri, ContentValues contentValues)
あるアプリケーションから別のアプリケーションを使用してファイルの作成に成功した人はいますか?つまり、アプリケーションはアプリケーションの内部ストレージFoo
からデータを使用してファイルを作成しますか?ContentValues
Bar
android - Google+ フォト ACTION_VIEW、FLAG_GRANT_PERSISTABLE_URI_PERMISSION の例外
私のアプリには、ファイルの種類に応じて外部ビューアーで開くことができるようにしたい内部ファイルがあります。アプリケーション マニフェストで次のように FileProvider を設定しています。
ファイルを表示するために、次のコードを使用してアプリケーション セレクターを表示します。
これはほとんどのアプリでうまく機能しますが、リストで Google+ フォト アプリを選択した場合、画像は Google+ フォトで正常にロードされますが、指でピンチして画像を拡大しようとするとすぐにクラッシュします。Google+ フォトがファイルへのアクセスを失ったようで、再度読み取ろうとするとアクセスが拒否されます。
私が試した他のすべてのアプリは完全に機能します
android - 外部ファイルに FileProvider を使用する理由
アクセス許可を制御しながら、あるアプリのプライベート ファイル (アプリの内部ストレージ内のファイル) を別のアプリと共有するのに FileProvider が役立つ理由を理解しています。
ドキュメントでは、外部ストレージ (SD カードなど) でファイルを共有するためにも使用する方法について説明しています。
<external-path name="name" path="path" />
それ以外の
<files-path name="name" path="path" />
( https://developer.android.com/reference/android/support/v4/content/FileProvider.html )
これのポイントは何ですか?これに FileProvider を使用する必要があるのはなぜですか? 他のアプリは既に外部ストレージにアクセスできるため、他のアプリが必要とするのは URI ではなくファイル パスだけです。私は何が欠けていますか?
android - メール送信時に Gmail 添付ファイルの Intent.ACTION_GET_CONTENT への応答が失敗する
クラウド ストレージ サービスに接続するファイル ピッカーを作成しようとしています。他のアプリケーションにファイルを添付するのに問題はありません。Gmail でさえ、Activity の結果を正常に取得し、設定した URI / クリップデータに基づいて適切なサムネイルを表示します。
問題は、実際にメールを送信しようとすると、Gmail がユーザーに「添付ファイルを送信できませんでした」と通知し、添付ファイルなしでメールを送信することです。
何が間違っているのかわかりません。URI を Intent.setData() として設定するだけでなく、URI を使用して Intent.setClipData() を設定しようとしました。さらに、FLAG_GRANT_READ_URI_PERMISSION のフラグを明示的に含めてみました。これらのどれも問題を解決しません。
何がうまくいかないのか知っている人は、声をかけてください。他のクラウド プロバイダーは、このフローでコンテンツを添付する際に問題がないように見えるので、自分が何を間違っているのかわかりません。
現在、私のコードは大まかに次のようになっていますが、Gmail ではまだ動作しません。