From 7a2fb4011e1101b5a653c1e74efb30caaf71a317 Mon Sep 17 00:00:00 2001 From: hughchen Date: Thu, 14 Nov 2019 11:42:48 +0800 Subject: [PATCH] Add take persistable permission for uri Fixes: 144443382 Test: Manual Change-Id: Iaec788982330355099d7e8551fed0f000377ce8a --- .../AdvancedBluetoothDetailsHeaderController.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/bluetooth/AdvancedBluetoothDetailsHeaderController.java b/src/com/android/settings/bluetooth/AdvancedBluetoothDetailsHeaderController.java index e245c22eb96..23f0dabbc86 100644 --- a/src/com/android/settings/bluetooth/AdvancedBluetoothDetailsHeaderController.java +++ b/src/com/android/settings/bluetooth/AdvancedBluetoothDetailsHeaderController.java @@ -19,6 +19,7 @@ package com.android.settings.bluetooth; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.content.Context; +import android.content.Intent; import android.graphics.Bitmap; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; @@ -260,15 +261,21 @@ public class AdvancedBluetoothDetailsHeaderController extends BasePreferenceCont } ThreadUtils.postOnBackgroundThread(() -> { + final Uri uri = Uri.parse(iconUri); try { + mContext.getContentResolver().takePersistableUriPermission(uri, + Intent.FLAG_GRANT_READ_URI_PERMISSION); + final Bitmap bitmap = MediaStore.Images.Media.getBitmap( - mContext.getContentResolver(), Uri.parse(iconUri)); + mContext.getContentResolver(), uri); ThreadUtils.postOnMainThread(() -> { mIconCache.put(iconUri, bitmap); imageView.setImageBitmap(bitmap); }); } catch (IOException e) { - Log.e(TAG, "Failed to get bitmap for: " + iconUri); + Log.e(TAG, "Failed to get bitmap for: " + iconUri, e); + } catch (SecurityException e) { + Log.e(TAG, "Failed to take persistable permission for: " + uri, e); } }); }