2011-12-29 42 views
3

在我的应用程序中,我想使用我的应用程序添加警报。所以我想直接从我的应用程序启动手机的添加报警屏幕。那么如何使用Intent来启动它?如何在Android中使用Intent启动闹钟屏幕?

+0

我在做类似的事情! http://stackoverflow.com/questions/13523350/android-alarm-clock-ui – toobsco42 2012-11-23 07:18:46

+0

看到http://stackoverflow.com/questions/13523350/android-alarm-clock-ui – 2016-04-29 16:24:13

回答

-1

你可以通过PackageManager找到Alarm App Intent。

参见here

5

下面的代码开头的AlarmClock的活动:

Intent i = new Intent(AlarmClock.ACTION_SET_ALARM); 
i.putExtra(AlarmClock.EXTRA_MESSAGE, "New Alarm"); 
i.putExtra(AlarmClock.EXTRA_HOUR, 10); 
i.putExtra(AlarmClock.EXTRA_MINUTES, 30); 
startActivity(i); 

您还需要使用以下权限:

com.android.alarm.permission.SET_ALARM

见Android文档here

+0

当然,你救了我的一天。谢谢 :) – 2016-12-07 23:57:39

2

你应该制定一个意图。

正如在Android上的时钟和闹钟的意图没有明确的预定义的,我用下面的代码片段来做到这一点:

PackageManager packageManager = context.getPackageManager(); 
Intent alarmClockIntent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER); 

// Verify clock implementation 
String clockImpls[][] = { 
     {"HTC Alarm Clock", "com.htc.android.worldclock", "com.htc.android.worldclock.WorldClockTabControl" }, 
     {"Standar Alarm Clock", "com.android.deskclock", "com.android.deskclock.AlarmClock"}, 
     {"Froyo Nexus Alarm Clock", "com.google.android.deskclock", "com.android.deskclock.DeskClock"}, 
     {"Moto Blur Alarm Clock", "com.motorola.blur.alarmclock", "com.motorola.blur.alarmclock.AlarmClock"}, 
     {"Samsung Galaxy Clock", "com.sec.android.app.clockpackage","com.sec.android.app.clockpackage.ClockPackage"} , 
     {"Sony Ericsson Xperia Z", "com.sonyericsson.organizer", "com.sonyericsson.organizer.Organizer_WorldClock" }, 
     {"ASUS Tablets", "com.asus.deskclock", "com.asus.deskclock.DeskClock"} 

}; 

boolean foundClockImpl = false; 

for(int i=0; i<clockImpls.length; i++) { 
    String vendor = clockImpls[i][0]; 
    String packageName = clockImpls[i][1]; 
    String className = clockImpls[i][2]; 
    try { 
     ComponentName cn = new ComponentName(packageName, className); 
     ActivityInfo aInfo = packageManager.getActivityInfo(cn, PackageManager.GET_META_DATA); 
     alarmClockIntent.setComponent(cn); 
     debug("Found " + vendor + " --> " + packageName + "/" + className); 
     foundClockImpl = true; 
    } catch (NameNotFoundException e) { 
     debug(vendor + " does not exists"); 
    } 
} 

if (foundClockImpl) { 
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, alarmClockIntent, 0); 
     // add pending intent to your component 
     // .... 
} 

通过这种方式,我可以运行一个默认的时钟或闹钟经理。 感谢frusso