if updating notification, also try getting app name from DB

Now that the packageName is included in the Installer broadcast Intents,
it can be used to fetch the app name from the database, if all other ways
fail.
This commit is contained in:
Hans-Christoph Steiner 2016-09-01 15:58:09 +02:00
parent e69a6d5a8f
commit cb4edbed44

View File

@ -5,6 +5,7 @@ import android.app.NotificationManager;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.app.Service; import android.app.Service;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
@ -22,6 +23,7 @@ import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.compat.PackageManagerCompat; import org.fdroid.fdroid.compat.PackageManagerCompat;
import org.fdroid.fdroid.data.Apk; import org.fdroid.fdroid.data.Apk;
import org.fdroid.fdroid.data.App; import org.fdroid.fdroid.data.App;
import org.fdroid.fdroid.data.AppProvider;
import org.fdroid.fdroid.net.Downloader; import org.fdroid.fdroid.net.Downloader;
import org.fdroid.fdroid.net.DownloaderService; import org.fdroid.fdroid.net.DownloaderService;
@ -255,6 +257,10 @@ public class InstallManagerService extends Service {
// show notification if app details is not visible // show notification if app details is not visible
if (!TextUtils.isEmpty(errorMessage)) { if (!TextUtils.isEmpty(errorMessage)) {
App app = getAppFromActive(downloadUrl); App app = getAppFromActive(downloadUrl);
if (app == null) {
ContentResolver resolver = context.getContentResolver();
app = AppProvider.Helper.findByPackageName(resolver, apk.packageName);
}
// show notification if app details is not visible // show notification if app details is not visible
if (app != null && AppDetails.isAppVisible(app.packageName)) { if (app != null && AppDetails.isAppVisible(app.packageName)) {
cancelNotification(downloadUrl); cancelNotification(downloadUrl);
@ -337,11 +343,15 @@ public class InstallManagerService extends Service {
title = String.format(getString(R.string.tap_to_update_format), title = String.format(getString(R.string.tap_to_update_format),
pm.getApplicationLabel(pm.getApplicationInfo(apk.packageName, 0))); pm.getApplicationLabel(pm.getApplicationInfo(apk.packageName, 0)));
} catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {
// TODO use packageName to fetch App instance from database if not cached
String name = getAppName(apk); String name = getAppName(apk);
if (TextUtils.isEmpty(name) || name.equals(new App().name)) { if (TextUtils.isEmpty(name) || name.equals(new App().name)) {
ContentResolver resolver = getContentResolver();
App app = AppProvider.Helper.findByPackageName(resolver, apk.packageName);
if (app == null || TextUtils.isEmpty(app.name)) {
return; // do not have a name to display, so leave notification as is return; // do not have a name to display, so leave notification as is
} }
name = app.name;
}
title = String.format(getString(R.string.tap_to_install_format), name); title = String.format(getString(R.string.tap_to_install_format), name);
} }