私のアプリにサードパーティのアプリ(たとえばWhatsApp)からイメージを取得しようとしています。Android:コンテンツ:// URI経由でサードパーティのアプリ(例:WhatsApp)からビットマップイメージを取得する
content://com.whatsapp.provider.media/item/61025
しかし、私のアプリで、私はURI上記でgetContentResolver().openInputStream(uri)
またはgetContentResolver().openFileDescriptor(uri, "r")
を呼び出すとき、それは例外でクラッシュ:
java.lang.SecurityException:から エクスポートされていない(PID = 30321、UID = 10145)アクセス権拒否:ProcessRecord {com.myapp/u0a145 a4b804a 30321}から開口プロバイダ com.whatsapp.MediaProvider uid 10083
私がこれまで試したどのような
私はSOにこの例外のために見て、similar questionは、Googleフォトからイメージをインポートするのではなく提起などの権限を追加することの必要性を得た:
<uses-permission android:name="com.google.android.apps.photos.permission.GOOGLE_PHOTOS"/>
しかし、多くのアプリがあり、それぞれの権限を追加する必要があるため、これは納得できません。
他のanswersでは、コンテンツプロバイダーからのデータを直ちに読み書きすることが推奨されています。しかし、どうしたらいいかわからない。私はopenInputStream
自体で例外を得るからです。
また、WhatsApp画像を他のアプリ(Googleドライブなど)と正常に共有できるので、これを行うには何らかの方法が必要であることにも言及する必要があります。
誰かがこれに関する共有ヒントや解決策を教えてください。
実行時に外部ストレージから読み取り、読み取りを許可されていますか? –
そのプロバイダはエクスポートされていませんが、一部の限られたサブセットのパッケージしかGoogleドライブにアクセスできませんが、あなたのアプリは許可されていません。 – pskink
@Nabinはい許可があります – Atul