1

Android 4 用のアナログ時計ウィジェットを作成しました。ここで、ネイティブのアナログ時計ウィジェットと同じ動作を模倣したいと考えています。つまり、時計をタップするとアラーム設定ウィンドウが表示されます。

検索した後、このトピックを見つけました: Intent to launch the clock application on android

アラーム設定ではなく、デスクトップ クロックを起動します。私は android.provider.AlarmClock で何かをしなければならないと思いますが、アラームウィンドウを起動することはできません。これを達成する方法を知っている人はいますか?

4

1 に答える 1

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.AlarmClock(with com.google.android.deskclock) を代わりに使用com.android.deskclock.DeskClockすると、目覚まし時計画面の代わりにアラーム リストが生成されます。

于 2012-11-23T04:05:44.253 に答える