0

ユーザーがサービスに投稿したかどうかを確認するためにユーザーが指定した特定の時間にAndroidにアラームを発生させようとしています。ただし、Androidはインテントを起動しません。

AndroidManifest.xml:

<receiver
 android:name="me.kennydude.dailybooth.NoBoothNotify.AlarmReciever" />
<service
 android:name="me.kennydude.dailybooth.NoBoothNotify.AlarmService">
</service>

アラームを設定するNoBoothNotify.java関数:

public static void settingsChanged(){
    Context cntxt = DailyboothApplication.getInstance();
    String value = DailyboothShared.getPersonalSetting("noBoothNotify", "no");
    AlarmManager alm = (AlarmManager) cntxt.getSystemService(Context.ALARM_SERVICE);

    Intent piI = new Intent(cntxt, AlarmReciever.class);
    if(Build.VERSION.SDK_INT >= 5){
        SharedPreferences prefs = DailyboothShared.getPrefs();
        piI.putExtra("account", prefs.getString("current_account", null));
    }
    PendingIntent pi = PendingIntent.getBroadcast(cntxt, 348347873, piI, PendingIntent.FLAG_UPDATE_CURRENT);

    if(value.equals("no")){
        alm.cancel(pi);
    } else{
        String[] values = value.split(":");
        Calendar cal = Calendar.getInstance();
        Log.d("s", value);
        // cal.setTimeInMillis(System.currentTimeMillis());
        cal.clear(Calendar.HOUR_OF_DAY);
        cal.clear(Calendar.SECOND);
        cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(values[0]));
        cal.set(Calendar.MINUTE, Integer.parseInt(values[1]));
        cal.setTimeZone(TimeZone.getTimeZone("GMT"));
        Log.d("s", "setting for " + cal.getTimeInMillis());
        Log.d("s", "HRD: " + cal.getTime().toGMTString());
        alm.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
                /*AlarmManager.INTERVAL_DAY,*/ pi);
    }
}

ご覧のとおり、私はそれを機能させようとしています(したがって、コメントアウトされた部分)が、まだ機能していません。

誰か助けてもらえますか?

ありがとう、

ジョー

4

1 に答える 1

1

私はこれを修正したようです。何らかの理由で、レシーバーがサブクラスの場合、Androidはアラームを発生させたくありません。

発信を修正して維持するために、すべてを新しい名前空間に移動しましたが、機能しました。

ジョー

于 2011-05-15T13:58:51.220 に答える