summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClark Scheff <clark@cyngn.com>2014-05-22 13:07:52 -0700
committerClark Scheff <clark@cyngn.com>2014-05-22 13:07:52 -0700
commitf6186b27895253561ab58e8d093e664c8ceb6cf6 (patch)
tree5b7dd531ff103daefb368af78a3068758ea7e8df
parent4b4401c2285331d499571ea98515ca7ed88beae3 (diff)
downloadpackages_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.xml3
-rw-r--r--src/org/cyanogenmod/theme/chooser/ChooserActivity.java69
-rw-r--r--src/org/cyanogenmod/theme/util/NotificationHelper.java3
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);