[解決済み】Android 4.4 (KitKat) の Android Gallery が Intent.ACTION_GET_CONTENT に対して異なる URI を返してしまう。
2022-04-08 20:04:35
質問
KitKat以前(または新しいGallery以前)は
Intent.ACTION_GET_CONTENT
は、次のようなURIを返します。
content://media/external/images/media/3951.
を使用することで
ContentResolver
をクエリングし
MediaStore.Images.Media.DATA
は、ファイルのURLを返しました。
しかしKitKatでは、GalleryはこのようなURIを("Last"を介して)返します。
content://com.android.providers.media.documents/document/image:3951
どのように処理すればよいですか?
どのように解決するのですか?
これを試してみてください。
if (Build.VERSION.SDK_INT <19){
Intent intent = new Intent();
intent.setType("image/jpeg");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, getResources().getString(R.string.select_picture)),GALLERY_INTENT_CALLED);
} else {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/jpeg");
startActivityForResult(intent, GALLERY_KITKAT_INTENT_CALLED);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK) return;
if (null == data) return;
Uri originalUri = null;
if (requestCode == GALLERY_INTENT_CALLED) {
originalUri = data.getData();
} else if (requestCode == GALLERY_KITKAT_INTENT_CALLED) {
originalUri = data.getData();
final int takeFlags = data.getFlags()
& (Intent.FLAG_GRANT_READ_URI_PERMISSION
| Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
// Check for the freshest data.
getContentResolver().takePersistableUriPermission(originalUri, takeFlags);
}
loadSomeStreamAsynkTask(originalUri);
}
おそらく必要
SuppressLint("NewApi") です。
のために
takePersistableUriPermission(パーミッション)
関連
-
[解決済み】Android TextView : "setTextで表示されたテキストを連結しない" について
-
[解決済み】AndroidのSSL接続でトラストアンカーが見つからない
-
[解決済み】com.android.ide.common.process.ProcessException: aaptの実行に失敗しました! どうすればいいですか?
-
[解決済み] サポートされていないメソッドです。BaseConfig.getApplicationIdSuffix()がサポートされていません。
-
[解決済み] TypeError: cb.apply は関数ではありません。
-
[解決済み] Mockito lenient() を使用する場合
-
[解決済み] AndroidのADBデバイスが不正に
-
[解決済み] android.intent.action.MAINの意味は何ですか?
-
[解決済み] Android: @drawable/picture を drawable に変換するのに失敗しました。
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】java.lang.RuntimeException: アクティビティを開始できない ComponentInfo
-
[解決済み] カスタムアダプタからnotifyDataSetChangeが機能しない
-
[解決済み】このアクティビティは、すでにウィンドウ装飾によって提供されるアクションバーを持っています。
-
[解決済み】Android Studio 3.2 - com.android.tools.build:aapt2:3.2.0-4818971 を見つけられませんでした。
-
[解決済み】googleコンソールエラー`OR-IEH-01`について
-
[解決済み] コンパイルした.apkを端末にインストールしようとするとINSTALL_FAILED_UPDATE_INCOMPATIBLEが表示される
-
[解決済み】Android内蔵のギャラリーアプリからプログラムで画像を取得/選択する方法
-
[解決済み】URIから実パスを取得、Android KitKatの新ストレージアクセスフレームワーク【重複あり
-
[解決済み] Androidです。コンテンツURIからファイルURIを取得する?
-
[解決済み] Uri.getPath()で実パスを取得する。