我已经为Android 4创建了一个模拟时钟小部件。现在,我想要模拟与本地模拟时钟小部件相同的行为,即在轻敲时钟时显示闹钟设置窗口。
经过搜索,我找到了这个主题:Intent to launch the clock application on android
这会启动桌面时钟,而不是闹钟设置。我想我必须用android.provider.AlarmClock做点什么,但是我不能让它启动警报窗口。有谁知道如何做到这一点吗?
发布于 2012-11-23 12:05:44
在我的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 (带com.google.android.deskclock)而不是com.android.deskclock.DeskClock会生成警报列表,而不是闹钟屏幕。
https://stackoverflow.com/questions/10375782
复制相似问题