diff options
| -rw-r--r-- | core/java/android/content/ContentProvider.java | 17 | ||||
| -rw-r--r-- | core/java/android/content/ContentResolver.java | 9 |
2 files changed, 16 insertions, 10 deletions
diff --git a/core/java/android/content/ContentProvider.java b/core/java/android/content/ContentProvider.java index c8db0d8c958d..b72db5bdafa3 100644 --- a/core/java/android/content/ContentProvider.java +++ b/core/java/android/content/ContentProvider.java @@ -342,15 +342,16 @@ public abstract class ContentProvider implements ContentInterface, ComponentCall final int enumCheckUriPermission = GET_TYPE_ACCESSED_WITHOUT_PERMISSION__LOCATION__PROVIDER_CHECK_URI_PERMISSION; if (permissionCheckPassed) { - // Just for logging for mediaProvider cases - final ProviderInfo cpi = mContext.getPackageManager() - .resolveContentProvider(uri.getAuthority(), - PackageManager.ComponentInfoFlags.of(PackageManager.GET_META_DATA)); - final int callingUserId = UserHandle.getUserId(callingUid); - final Uri userUri = (mSingleUser - && !UserHandle.isSameUser(mMyUid, callingUid)) - ? maybeAddUserId(uri, callingUserId) : uri; try { + // Just for logging for mediaProvider cases + final ProviderInfo cpi = mContext.getPackageManager() + .resolveContentProvider(uri.getAuthority(), + PackageManager.ComponentInfoFlags.of( + PackageManager.GET_META_DATA)); + final int callingUserId = UserHandle.getUserId(callingUid); + final Uri userUri = (mSingleUser + && !UserHandle.isSameUser(mMyUid, callingUid)) + ? maybeAddUserId(uri, callingUserId) : uri; if (cpi.forceUriPermissions && mInterface.checkUriPermission(uri, callingUid, Intent.FLAG_GRANT_READ_URI_PERMISSION) diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java index b84eb118b8d4..456d21897711 100644 --- a/core/java/android/content/ContentResolver.java +++ b/core/java/android/content/ContentResolver.java @@ -930,7 +930,8 @@ public abstract class ContentResolver implements ContentInterface { if (provider != null) { try { final StringResultListener resultListener = new StringResultListener(); - provider.getTypeAsync(url, new RemoteCallback(resultListener)); + provider.getTypeAsync(mContext.getAttributionSource(), + url, new RemoteCallback(resultListener)); resultListener.waitForResult(CONTENT_PROVIDER_TIMEOUT_MILLIS); if (resultListener.exception != null) { throw resultListener.exception; @@ -944,7 +945,11 @@ public abstract class ContentResolver implements ContentInterface { Log.w(TAG, "Failed to get type for: " + url + " (" + e.getMessage() + ")"); return null; } finally { - releaseProvider(provider); + try { + releaseProvider(provider); + } catch (java.lang.NullPointerException e) { + // does nothing, Binder connection already null + } } } |