2012-09-26 62 views
0

我試圖在設備的鬧鐘應用程序中使用Intent(AlarmClock.ACTION_SET_ALARM)設置新的鬧鐘。它在我嘗試使用的所有手機中都能正常工作。但在Galaxy S2中它不起作用。該意圖打開一個空的黑屏時鐘應用程序,而不是鬧鐘應用程序。ACTION_SET_ALARM在Galaxy SII中不起作用

代碼:

Intent i = new Intent(AlarmClock.ACTION_SET_ALARM); 
    i.putExtra(AlarmClock.EXTRA_HOUR, hour); 
    i.putExtra(AlarmClock.EXTRA_MINUTES, minutes); 
    i.putExtra(AlarmClock.EXTRA_MESSAGE,personalMessage); 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
     i.putExtra(AlarmClock.EXTRA_SKIP_UI, true); 
    } 
    startActivity(i); 

如果我直接打開應用程序(com.sec.android.app.clockpackage.ClockPackagesetClassName,所有的東西),我可以打開正確的應用程序,但沒有設置報警。

代碼:

String packageName = "com.sec.android.app.clockpackage"; 
    String className = "com.sec.android.app.clockpackage.ClockPackage"; 
    Intent internetIntent = new Intent(AlarmClock.ACTION_SET_ALARM); 
    internetIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
    internetIntent.setClassName(packageName, className); 
    internetIntent.putExtra(AlarmClock.EXTRA_HOUR, hour); 
    internetIntent.putExtra(AlarmClock.EXTRA_MINUTES, minutes); 
    internetIntent.putExtra(AlarmClock.EXTRA_MESSAGE,personalMessage); 
    startActivity(internetIntent); 

有誰知道?

謝謝!

+0

你試過下降'EXTRA_SKIP_UI'? – CommonsWare

+0

是的,我們嘗試了它,它仍然打開時鐘應用程序的黑色碎片。 – coderflow

+0

一般而言,設備被認爲是爲了兌現來自SDK的所有這些「ACTION_」「Intent」動作,但他們不必這樣做。理想情況下,他們根本就沒有一個'',所以我們可以通過'PackageManager'來捕獲ActivityNotFoundException(或者檢測缺失的活動)並處理它。但是我並不感到震驚,雖然我沒有碰到Galaxy S2,但我不知道我是否能夠重現這個問題。很可能,您需要使用「構建」和「圍繞損害路線」來檢查此特定設備。 – CommonsWare

回答

0

我遇到了同樣的問題。

試試這個:

private void setAlarmNow() { 
    GregorianCalendar cal = new GregorianCalendar(); 
    int hour = cal.get(Calendar.HOUR_OF_DAY); 
    int minute = cal.get(Calendar.MINUTE)+1;//to make sure it won't be set at the next day 
    intent = new Intent(AlarmClock.ACTION_SET_ALARM); 
    intent.putExtra(AlarmClock.EXTRA_HOUR, hour); 
    intent.putExtra(AlarmClock.EXTRA_MINUTES, minute); 
    intent.putExtra(AlarmClock.EXTRA_SKIP_UI, true);  

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0); 

    AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 

    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 
    calendar.add(Calendar.SECOND, 10); 
    alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); 
    Log.d(TAG, "Backup alarm geset."); 
} 
相關問題