summaryrefslogtreecommitdiffstats
path: root/src/com/android/packageinstaller/InstallStart.java
diff options
context:
space:
mode:
authorSuprabh Shukla <suprabh@google.com>2018-02-08 19:14:04 -0800
committerSuprabh Shukla <suprabh@google.com>2018-02-08 20:22:52 -0800
commit03bf3596ab973dc4227490de1e53f4ba389fcf50 (patch)
tree0ade1b5ec36e21be5470e96b3200e85751057eb6 /src/com/android/packageinstaller/InstallStart.java
parent349e3eeb34788892120fff602e6cccee67889d73 (diff)
downloadandroid_packages_apps_PackageInstaller-03bf3596ab973dc4227490de1e53f4ba389fcf50.tar.gz
android_packages_apps_PackageInstaller-03bf3596ab973dc4227490de1e53f4ba389fcf50.tar.bz2
android_packages_apps_PackageInstaller-03bf3596ab973dc4227490de1e53f4ba389fcf50.zip
Fixing NPE when there is no DownloadProvider
If there is no content provider registered for authority 'downloads', or it is disabled, InstallStart would crash. Fixing it by checking for null. Test: Manual. 1. Disable DownloadProvider: adb shell pm disable com.android.providers.downloads 2. Use ES File explorer (or any other 3p app) to launch an apk install. No crash - install goes through normally. Fixes: 73078986 Change-Id: I4876174a7a87530aacaf9f35cca3071fa353b339
Diffstat (limited to 'src/com/android/packageinstaller/InstallStart.java')
-rw-r--r--src/com/android/packageinstaller/InstallStart.java15
1 files changed, 6 insertions, 9 deletions
diff --git a/src/com/android/packageinstaller/InstallStart.java b/src/com/android/packageinstaller/InstallStart.java
index 5c9ad85c..d06b6f55 100644
--- a/src/com/android/packageinstaller/InstallStart.java
+++ b/src/com/android/packageinstaller/InstallStart.java
@@ -29,6 +29,7 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageInstaller;
import android.content.pm.PackageManager;
+import android.content.pm.ProviderInfo;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
@@ -208,18 +209,14 @@ public class InstallStart extends Activity {
}
private boolean isSystemDownloadsProvider(int uid) {
- final String downloadProviderPackage = getPackageManager().resolveContentProvider(
- DOWNLOADS_AUTHORITY, 0).getComponentName().getPackageName();
+ final ProviderInfo downloadProviderPackage = getPackageManager().resolveContentProvider(
+ DOWNLOADS_AUTHORITY, 0);
if (downloadProviderPackage == null) {
+ // There seems to be no currently enabled downloads provider on the system.
return false;
}
- try {
- ApplicationInfo applicationInfo = getPackageManager().getApplicationInfo(
- downloadProviderPackage, 0);
- return (applicationInfo.isSystemApp() && uid == applicationInfo.uid);
- } catch (PackageManager.NameNotFoundException ex) {
- return false;
- }
+ final ApplicationInfo appInfo = downloadProviderPackage.applicationInfo;
+ return (appInfo.isSystemApp() && uid == appInfo.uid);
}
private IActivityManager getIActivityManager() {