diff options
author | Clark Scheff <clark@cyngn.com> | 2014-05-22 13:07:52 -0700 |
---|---|---|
committer | Clark Scheff <clark@cyngn.com> | 2014-05-22 13:07:52 -0700 |
commit | f6186b27895253561ab58e8d093e664c8ceb6cf6 (patch) | |
tree | 5b7dd531ff103daefb368af78a3068758ea7e8df | |
parent | 4b4401c2285331d499571ea98515ca7ed88beae3 (diff) | |
download | packages_apps_ThemeChooser-f6186b27895253561ab58e8d093e664c8ceb6cf6.zip packages_apps_ThemeChooser-f6186b27895253561ab58e8d093e664c8ceb6cf6.tar.gz packages_apps_ThemeChooser-f6186b27895253561ab58e8d093e664c8ceb6cf6.tar.bz2 |
Fix handling of new intents from installed theme notifications.
Change-Id: Iad492cccbc12aa9bd6a9b98da106960a56b969f5
-rw-r--r-- | AndroidManifest.xml | 3 | ||||
-rw-r--r-- | src/org/cyanogenmod/theme/chooser/ChooserActivity.java | 69 | ||||
-rw-r--r-- | src/org/cyanogenmod/theme/util/NotificationHelper.java | 3 |
3 files changed, 43 insertions, 32 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 5605678..8f9295d 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -26,7 +26,8 @@ android:theme="@style/AppTheme" > <activity android:name="org.cyanogenmod.theme.chooser.ChooserActivity" - android:label="@string/app_name" > + android:label="@string/app_name" + android:launchMode="singleTop"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> diff --git a/src/org/cyanogenmod/theme/chooser/ChooserActivity.java b/src/org/cyanogenmod/theme/chooser/ChooserActivity.java index 76b0bf0..f2ebad0 100644 --- a/src/org/cyanogenmod/theme/chooser/ChooserActivity.java +++ b/src/org/cyanogenmod/theme/chooser/ChooserActivity.java @@ -43,44 +43,53 @@ public class ChooserActivity extends FragmentActivity { } if (savedInstanceState == null) { - //Determine if there we need to filter by component (ex icon sets only) - final Intent intent = getIntent(); - Bundle extras = (Bundle) intent.getExtras(); - String filter = (extras == null) ? null : extras.getString(EXTRA_COMPONENT_FILTER); + handleIntent(getIntent()); + } + } - // If activity started by wallpaper chooser then filter on wallpapers - if (Intent.ACTION_SET_WALLPAPER.equals(intent.getAction())) { - filter = "mods_homescreen"; - } + @Override + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + handleIntent(intent); + } - // Support filters passed in as csv. Since XML prefs do not support - // passing extras in as arrays. - ArrayList<String> filtersList = new ArrayList<String>(); - if (filter != null) { - String[] filters = filter.split(","); - filtersList.addAll(Arrays.asList(filters)); - } + private void handleIntent(final Intent intent) { + //Determine if there we need to filter by component (ex icon sets only) + Bundle extras = intent.getExtras(); + String filter = (extras == null) ? null : extras.getString(EXTRA_COMPONENT_FILTER); + + // If activity started by wallpaper chooser then filter on wallpapers + if (Intent.ACTION_SET_WALLPAPER.equals(intent.getAction())) { + filter = "mods_homescreen"; + } + + // Support filters passed in as csv. Since XML prefs do not support + // passing extras in as arrays. + ArrayList<String> filtersList = new ArrayList<String>(); + if (filter != null) { + String[] filters = filter.split(","); + filtersList.addAll(Arrays.asList(filters)); + } - Fragment fragment = null; - if (Intent.ACTION_MAIN.equals(intent.getAction()) && - intent.hasExtra(EXTRA_PKGNAME)) { - String pkgName = intent.getStringExtra(EXTRA_PKGNAME); - fragment = ChooserDetailFragment.newInstance(pkgName, null); - // Handle case where Theme Store or some other app wishes to open - // a detailed theme view for a given package - try { - final PackageManager pm = getPackageManager(); - if (pm.getPackageInfo(pkgName, 0) == null) { - fragment = ChooserBrowseFragment.newInstance(filtersList); - } - } catch (PackageManager.NameNotFoundException e) { + Fragment fragment = null; + if (Intent.ACTION_MAIN.equals(intent.getAction()) && intent.hasExtra(EXTRA_PKGNAME)) { + String pkgName = intent.getStringExtra(EXTRA_PKGNAME); + fragment = ChooserDetailFragment.newInstance(pkgName, null); + // Handle case where Theme Store or some other app wishes to open + // a detailed theme view for a given package + try { + final PackageManager pm = getPackageManager(); + if (pm.getPackageInfo(pkgName, 0) == null) { fragment = ChooserBrowseFragment.newInstance(filtersList); } - } else { + } catch (PackageManager.NameNotFoundException e) { fragment = ChooserBrowseFragment.newInstance(filtersList); } - getSupportFragmentManager().beginTransaction().replace(R.id.content, fragment, "ChooserBrowseFragment").commit(); + } else { + fragment = ChooserBrowseFragment.newInstance(filtersList); } + getSupportFragmentManager().beginTransaction().replace(R.id.content, fragment, + "ChooserBrowseFragment").commit(); } @Override diff --git a/src/org/cyanogenmod/theme/util/NotificationHelper.java b/src/org/cyanogenmod/theme/util/NotificationHelper.java index a4e8b0f..9eaf261 100644 --- a/src/org/cyanogenmod/theme/util/NotificationHelper.java +++ b/src/org/cyanogenmod/theme/util/NotificationHelper.java @@ -48,7 +48,8 @@ public class NotificationHelper { Intent intent = new Intent(context, ChooserActivity.class); intent.setAction(Intent.ACTION_MAIN); intent.putExtra("pkgName", pkgName); - PendingIntent pi = PendingIntent.getActivity(context, 0, intent, 0); + PendingIntent pi = PendingIntent.getActivity(context, 0, intent, + PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_CANCEL_CURRENT); NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); |