diff options
author | Suprabh Shukla <suprabh@google.com> | 2018-02-08 19:14:04 -0800 |
---|---|---|
committer | Suprabh Shukla <suprabh@google.com> | 2018-02-08 20:22:52 -0800 |
commit | 03bf3596ab973dc4227490de1e53f4ba389fcf50 (patch) | |
tree | 0ade1b5ec36e21be5470e96b3200e85751057eb6 /src/com/android/packageinstaller/InstallStart.java | |
parent | 349e3eeb34788892120fff602e6cccee67889d73 (diff) | |
download | android_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.java | 15 |
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() { |