2012-04-29 3 views
1

Android 4 용 아날로그 시계 위젯을 만들었습니다. 이제 태핑시 알람 설정 창을 표시하는 기본 아날로그 시계 위젯과 동일한 동작을 모방하고 싶습니다. 시계. Intent to launch the clock application on androidandroid에서 아날로그 시계를 두 드릴 때 알람 설정을 열려면

바탕 화면 시계가 아니라 알람 설정을 실행 :

검색 한 후이 주제를 발견했다. android.provider.AlarmClock으로 뭔가를해야한다고 생각합니다. 그러나 알람 창을 시작하도록 할 수는 없습니다. 아무도 이것을 달성하는 방법을 알고 있습니까?

답변

0

AppWidgetProvider 클래스에서 다음은 4.1.2에서 나에게 적합합니다 (4.x에서만 작동하기를 원한다면) - 그렇지 않으면 적절한 버전의 패키지와 클래스 이름을 선택하기위한 조건부 논리가 필요합니다.) 게시물에 당신이 연결처럼 : 대신 com.android.deskclock.DeskClockcom.android.deskclock.AlarmClock (com.google.android.deskclock로를 사용하여 기본적으로

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; 
} 

) 경보 목록 대신 알람 시계 화면을 생성합니다.

관련 문제