summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AndroidManifest.xml25
-rw-r--r--src/com/cyngn/theme/chooser/BootReceiver.java42
2 files changed, 61 insertions, 6 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 4b6d543..73e497a 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -27,6 +27,9 @@
<!-- Used to cleanly uninstall themes without relying on the PackageInstaller apk -->
<uses-permission android:name="android.permission.DELETE_PACKAGES" />
+ <!-- Used for disabling theme chooser icon if store exists -->
+ <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="19" />
@@ -44,7 +47,6 @@
android:screenOrientation="sensorPortrait">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
- <category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
@@ -53,16 +55,21 @@
<category android:name="cyanogenmod.intent.category.APP_THEMES" />
</intent-filter>
<intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="cyngn.intent.category.APP_THEMES" />
- </intent-filter>
- <intent-filter>
<action android:name="android.intent.action.APPLY_THEME"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
+ <activity-alias android:name="com.cyngn.theme.chooser.ChooserLauncher"
+ android:targetActivity="com.cyngn.theme.chooser.ChooserActivity"
+ android:label="@string/app_name"
+ android:icon="@drawable/ic_app_themes">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity-alias>
+
<receiver android:name="com.cyngn.theme.chooser.AppReceiver" >
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
@@ -82,6 +89,12 @@
</intent-filter>
</receiver>
+ <receiver android:name=".BootReceiver">
+ <intent-filter>
+ <action android:name="android.intent.action.BOOT_COMPLETED" />
+ </intent-filter>
+ </receiver>
+
<service android:name="com.cyngn.theme.chooser.NotificationHijackingService"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
<intent-filter>
diff --git a/src/com/cyngn/theme/chooser/BootReceiver.java b/src/com/cyngn/theme/chooser/BootReceiver.java
new file mode 100644
index 0000000..8240bfc
--- /dev/null
+++ b/src/com/cyngn/theme/chooser/BootReceiver.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2014 The Cyanogen, Inc
+ */
+package com.cyngn.theme.chooser;
+
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+
+public class BootReceiver extends BroadcastReceiver {
+ private static final String CHOOSER_PKG_NAME = "com.cyngn.theme.chooser";
+ private static final String CHOOSER_ACTIVITY = "com.cyngn.theme.chooser.ChooserLauncher";
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ final String action = intent.getAction();
+ PackageManager pm = context.getPackageManager();
+ if (Intent.ACTION_BOOT_COMPLETED.equals(action)) {
+ try {
+ PackageInfo info = pm.getPackageInfo(ChooserActivity.THEME_STORE_PACKAGE, 0);
+ if (info != null) {
+ ComponentName cn = new ComponentName(CHOOSER_PKG_NAME, CHOOSER_ACTIVITY);
+ pm.setComponentEnabledSetting(cn,
+ PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+ PackageManager.DONT_KILL_APP);
+ }
+ } catch (PackageManager.NameNotFoundException e) {
+ // no store so nothing to do.
+ }
+
+ // now disable this receiver so we don't get called on future boots
+ ComponentName cn = new ComponentName(CHOOSER_PKG_NAME,
+ BootReceiver.class.getCanonicalName());
+ pm.setComponentEnabledSetting(cn,
+ PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+ PackageManager.DONT_KILL_APP);
+ }
+ }
+}