我正面临着我制作的时钟小部件的问题.我希望用户触摸时钟并在手机上启动时钟应用程序.这是代码:
//this worked on my nexus 2.1
if(VERSION.SDK.equals("7")){
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
Intent AlarmClockIntent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER).setComponent(new ComponentName("com.android.deskclock", "com.android.deskclock.DeskClock"));
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, AlarmClockIntent, 0);
views.setOnClickPendingIntent(R.id.Widget, pendingIntent);
AppWidgetManager.getInstance(context).updateAppWidget(intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS), views);
}
//this worked on my nexus +froyo2.2
else if(VERSION.SDK.equals("8")){
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
Intent AlarmClockIntent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER).setComponent(new ComponentName("com.google.android.deskclock", "com.android.deskclock.DeskClock"));
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, AlarmClockIntent, 0);
views.setOnClickPendingIntent(R.id.Widget, pendingIntent);
AppWidgetManager.getInstance(context).updateAppWidget(intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS), views);
}
//this worked on my htc magic with 1.5 and 1.6
else{
RemoteViews views = …Run Code Online (Sandbox Code Playgroud) 
我想弄清楚UI是如何为Android闹钟应用程序设计的.这似乎是使用Holo Dark Theme.
包含的屏幕截图是"创建/编辑警报" Activity屏幕.它看起来类似于Android设置.这种情况?因为"打开闹钟"和"振动"行看起来像ChexboxPreferences."铃声"行看起来像一个RingtonePreference.那个"时间"排怎么样?
正如@eric在评论中提到的以下答案之一,我正在尝试重新创建一个类似于闹钟应用程序的界面.我不想发送从我的应用程序启动Alarm Manager的意图.
那么"标签"行怎么样?这很像一个EditText视图.你有一个xml标签的组合Views和Preferences内部PreferenceScreen吗?
还有ActionBar一个垂直管道,我不知道这是如何创建但是"完成"视图ImageButton?
我并不完全相信它是首选项的组合,因为Alarm应用程序可以有多个警报而不仅仅是一个警报.如果有多个警报并且您不使用多个SharedPreferences文件,则创建内容提供程序以存储与多个警报相关的信息自然是有意义的.