summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/content/ContentProvider.java17
-rw-r--r--core/java/android/content/ContentResolver.java9
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
+ }
}
}