How to launch Alarm Clock screen using Intent in Android?

前端 未结 3 1060
無奈伤痛
無奈伤痛 2021-01-03 13:03

In my application, i want to add alarm using my App. So i want to launch the add alarm screen of the phone directly from my App. So how to launch it using Intent?

相关标签:
3条回答
  • 2021-01-03 13:26

    You should make an Intent.

    As the clock and alarm intent in android not clearly predefined, I used the following snippet code to do that:

    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
            // ....
    }
    

    In this way, I can run a default clock or alarm manager. thanks to frusso.

    0 讨论(0)
  • 2021-01-03 13:31

    you can find Alarm App Intent through PackageManager.

    see here.

    0 讨论(0)
  • 2021-01-03 13:45

    The following code starts an AlarmClock activity:

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

    You also need to use the following permission:

    com.android.alarm.permission.SET_ALARM

    See Android documentation here.

    0 讨论(0)
提交回复
热议问题