2012-04-29 4 views
1

Я создал аналоговый виджет часов для Android 4. Теперь я хочу подражать тому же поведению, что и родной аналоговый виджет часов, который должен отображать окно настроек тревоги при нажатии часы.Как открыть настройки будильника при нажатии аналоговых часов в android

После поиска я нашел эту тему: Intent to launch the clock application on android

, которая запускает настольные часы, а не параметры сигнализации. Я думаю, что мне нужно что-то сделать с android.provider.AlarmClock, но я не могу заставить его запускать окно аварий. Кто-нибудь знает, как добиться этого?

ответ

0

В моем классе AppWidgetProvider для меня работает 4.1.2 (при условии, что вы хотите работать только с 4.x - в противном случае вам понадобится условная логика для выбора правильного пакета и имен классов для соответствующей версии, как в посте вы связаны с):

public void onReceive(Context context, Intent intent) { 
    String action = intent.getAction(); 
    PendingIntent pendingIntent; 
    if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action)) { 
     RemoteViews views = new RemoteViews(context.getPackageName(), 
       R.layout.main); 
     pendingIntent = PendingIntent.getActivity(context, 0, 
       getAlarmPackage(context), 0); 
     views.setOnClickPendingIntent(R.id.analogClock1, pendingIntent); 

     AppWidgetManager 
       .getInstance(context) 
       .updateAppWidget(
         intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS), 
         views); 
    } 
} 

private Intent getAlarmPackage(Context context) { 
    PackageManager manager = context.getPackageManager(); 
    Intent intent = new Intent(Intent.ACTION_MAIN) 
      .addCategory(Intent.CATEGORY_LAUNCHER); 

    try { 
     ComponentName c = new ComponentName("com.google.android.deskclock", 
       "com.android.deskclock.AlarmClock"); 
     manager.getActivityInfo(c, PackageManager.GET_META_DATA); 
     intent.setComponent(c); 
    } catch (NameNotFoundException nf) { 
     Log.d("XXXX", "Caught name not found exception!"); 
    } 

    return intent; 
} 

в принципе, используя com.android.deskclock.AlarmClockcom.google.android.deskclock) вместо com.android.deskclock.DeskClock производит список тревог вместо экрана Будильник.

Смежные вопросы