問題タブ [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 が GetUriForFile で例外をスローする
FileProvidersの Android Developer Reference のサンプル コードに従いましたが、動作しません。
マニフェストのファイル プロバイダー定義にパスを設定しfiles/exports/
ましたが、参照ファイルはそのパスに存在します。
私のマニフェストで:
そしてxml/file_paths.xml
次に、次のコードで content-uri を取得しようとします。
ただし、次のエラーが表示されます。
アップデート
android.support.v4.content.FileProvider.parsePathStrategy(FileProvider.java:243)
Android ソース コードから、このコマンドが失敗して返されることがわかっている限り、それを突き止めることができましたnull
。
しかし、私には理由がわかりません...
android - 別のアプリケーションからアクセスできるアプリケーションのファイル フォルダ
いくつかのファイルを生成する 2 つのアプリがあり、これらのファイルをサーバー上で同期させたいと考えています。コードの重複を避けるために、これらのファイルを同期するためのバックグラウンド ワーカー スレッドを 1 つだけ作成しています。この時点で、2 つの独立した質問があります。
- サーバー上の 2 つのアプリケーションのファイルを同期する 1 つのワーカー スレッドを持つことは良い習慣ですか?
- ワーカー スレッドが app1 にあるとしましょう。app1 は app2 のファイルにどのようにアクセスできますか?
データベースを使用している場合、 ContentProvider が良い方法であることがわかったいくつかの調査を行いました。
android - startActivityForResult が Android バージョン 4.4 (Kitkat バージョン) で機能しない
私のアプリケーションを介して、ユーザーはファイルマネージャーからファイルを選択し、選択したファイル (例: PDF ドキュメント) を処理して、印刷や電子メールなどの他の手順を実行できます。
これを行うには、以下のコードを使用してインテントを表示し、そこからユーザーがファイル マネージャー オプションからファイルを選択できるようにしました。
Android Kitkat バージョン (4.4) の問題:
上記のコードを使用して、Android 4.3 および Android 4.4 を除くすべての Android バージョンのファイル マネージャー (つまり、サブ フォルダーとルート フォルダーの両方) からすべてのファイルにアクセスできます。
Android 4.4 では、ルート フォルダーからファイルにアクセスできますが、サブフォルダーからファイルにアクセスすることはできません。私はjava.io.FileNotFoundException
例外として取得します。
注: Astro File Managerをインストールしました。これにより、Android 4.4 のルート フォルダーとサブフォルダーの両方にアクセスできます。しかし、Android のデフォルトのファイル マネージャからサブフォルダ ファイルにアクセスできません。
android - FileProvider を他のアプリケーションで使用できるようにするにはどうすればよいですか?
FileProvider を他のアプリケーションで利用できるようにすることは可能ですか?
マニフェスト.xml
ドキュメントから:
false: プロバイダは他のアプリケーションで使用できません。android:exported="false" を設定して、プロバイダーへのアクセスをアプリケーションに制限します。プロバイダーと同じユーザー ID (UID) を持つアプリケーションのみがアクセスできます。
exportを true に設定しようとしましたが、この例外が発生しました
Unable to get provider android.support.v4.content.FileProvider: java.lang.SecurityException: Provider must not be exported
Why I can't export a FileProvider ?
android - 画像共有インテントは Gmail では機能しますが、FB と twitter がクラッシュします
ユーザーがデバイス上の他のアプリと画像を共有できるようにしようとしています。画像は、アプリの内部ストレージ領域の files/ サブディレクトリ内にあります。Gmail では問題なく動作しますが、私のインテントに応答すると Facebook と Twitter の両方がクラッシュします。
編集: Google+ も正常に動作します。
コードの関連セクションは次のとおりです。
Application.xml 内
xml/ファイルパス.xml
私のアクティビティの共有コードは次のとおりです。
contentUri
ログに記録されたときの値は次のとおりです。
content://org.iforce2d.myapp.MyActivity/shared/snapshot.jpg
Gmail、Facebook、Twitter を受信アプリとして確認しただけですが、幅広い OS バージョン (2.2.1 から 4.4.3 まで) で結果は非常に一貫しており、7 台のデバイスには Kindle が含まれています。
Gmail はうまく機能します。画像のサムネイルがメール作成に表示され、送信時にメールに正常に添付されます。
以下のように、Twitter と Facebook の両方がクラッシュします。
これは、これら 2 つのアプリで発生している問題を示す logcat のスタック トレースです。両方で同じ問題のようです (これは 4.4.3 から取得したものですが、2.2 までさかのぼってエラーは実質的に同じでした。 1 エラーメッセージの文言が少し異なりますが):
Facebook や Twitter で画像を共有することは、何百万人もの人々が一日中行っていることであることを考えると、実装が非常に難しいことにかなりショックを受けています :/
ここで私が間違っていることを誰かが見つけることができますか?
android - Android - ファイル プロバイダー - 権限の拒否
app1 と app2 の 2 つのアプリがあります。
App2 には次のものがあります。
パス.xml:
App2 は、アクティビティで App1 から要求を受け取り、画像の URI を取得します。App2 アクティビティは、URI が決定されると次のことを行います。
App2 から返された結果を受け取ると、App1 は次のことを行います。
App1 では、App2 から戻ると、次の例外が発生します。
java.lang.SecurityException: Permission Denial: open provider android.support.v4.content.FileProvider from ProcessRecord{52a99eb0 3493:com.android.App1.app/u0a57} (pid=3493, uid=10057) からエクスポートされていませんuid 10058
私は何を間違っていますか?