diff options
-rw-r--r-- | AndroidManifest.xml | 4 | ||||
-rwxr-xr-x | src/com/cyanogenmod/lockclock/ClockWidgetService.java | 11 | ||||
-rw-r--r-- | src/com/cyanogenmod/lockclock/misc/WidgetUtils.java | 40 |
3 files changed, 48 insertions, 7 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 34f63e4..b9349b8 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -16,8 +16,8 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.cyanogenmod.lockclock" - android:versionCode="10" - android:versionName="2.2.4" > + android:versionCode="11" + android:versionName="2.2.5" > <uses-sdk android:minSdkVersion="17" diff --git a/src/com/cyanogenmod/lockclock/ClockWidgetService.java b/src/com/cyanogenmod/lockclock/ClockWidgetService.java index ebd7823..73a182e 100755 --- a/src/com/cyanogenmod/lockclock/ClockWidgetService.java +++ b/src/com/cyanogenmod/lockclock/ClockWidgetService.java @@ -166,7 +166,7 @@ public class ClockWidgetService extends IntentService { private void refreshClock(RemoteViews clockViews, boolean smallWidget, boolean digitalClock) { // Analog or Digital clock if (digitalClock) { - // Hours/Minutes is specific to Didital, set it's size + // Hours/Minutes is specific to Digital, set it's size refreshClockFont(clockViews); clockViews.setViewVisibility(R.id.digital_clock, View.VISIBLE); clockViews.setViewVisibility(R.id.analog_clock, View.GONE); @@ -179,10 +179,11 @@ public class ClockWidgetService extends IntentService { refreshDateAlarmFont(clockViews, smallWidget); // Register an onClickListener on Clock, starting DeskClock - ComponentName clk = new ComponentName("com.android.deskclock", "com.android.deskclock.DeskClock"); - Intent i = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER).setComponent(clk); - PendingIntent pi = PendingIntent.getActivity(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT); - clockViews.setOnClickPendingIntent(R.id.clock_panel, pi); + Intent i = WidgetUtils.getDefaultClockIntent(this); + if (i != null) { + PendingIntent pi = PendingIntent.getActivity(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT); + clockViews.setOnClickPendingIntent(R.id.clock_panel, pi); + } } private void refreshClockFont(RemoteViews clockViews) { diff --git a/src/com/cyanogenmod/lockclock/misc/WidgetUtils.java b/src/com/cyanogenmod/lockclock/misc/WidgetUtils.java index 3f3589e..dd9454f 100644 --- a/src/com/cyanogenmod/lockclock/misc/WidgetUtils.java +++ b/src/com/cyanogenmod/lockclock/misc/WidgetUtils.java @@ -18,7 +18,10 @@ package com.cyanogenmod.lockclock.misc; import android.appwidget.AppWidgetManager; +import android.content.ComponentName; import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -130,4 +133,41 @@ public class WidgetUtils { } return 1f; } + + /** + * The following two methods return the default DeskClock intent depending on which + * clock package is installed + * + * Copyright 2013 Google Inc. + */ + private static final String[] CLOCK_PACKAGES = new String[] { + "com.google.android.deskclock", + "com.android.deskclock", + }; + + public static Intent getDefaultClockIntent(Context context) { + PackageManager pm = context.getPackageManager(); + for (String packageName : CLOCK_PACKAGES) { + try { + pm.getPackageInfo(packageName, 0); + return pm.getLaunchIntentForPackage(packageName); + } catch (PackageManager.NameNotFoundException ignored) { + } + } + return null; + } + + public static Intent getDefaultAlarmsIntent(Context context) { + PackageManager pm = context.getPackageManager(); + for (String packageName : CLOCK_PACKAGES) { + try { + ComponentName cn = new ComponentName(packageName, + "com.android.deskclock.AlarmClock"); + pm.getActivityInfo(cn, 0); + return Intent.makeMainActivity(cn); + } catch (PackageManager.NameNotFoundException ignored) { + } + } + return getDefaultClockIntent(context); + } } |