5

これに似た質問をたくさん見つけましたが、それらは複雑すぎます (コードが多すぎます)。少なくとも私はそう思います。

これは数行のコードで実行できますか? 10 分 (たとえば) でアクティビティを起動したい、それだけです。ありがとうございました。

4

2 に答える 2

3

アラームを10分間設定するには(たとえば)このコードを使用します

 AlarmManager alarmMgr = (AlarmManager)getSystemService(ALARM_SERVICE);
 Intent intent = new Intent(this, ShortTimeEntryReceiver.class);   
 PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,  intent, PendingIntent.FLAG_UPDATE_CURRENT);
 alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),10*60*1000, pendingIntent); 

アクティビティを開始するには

public class ShortTimeEntryReceiver extends BroadcastReceiver{


@Override
public void onReceive(Context context, Intent intent) {

 try {
         Bundle bundle = intent.getExtras();
         String message = bundle.getString("alarm_message");

         // Your activity name
         Intent newIntent = new Intent(context, ReminderPopupMessage.class); 
         newIntent.putExtra("alarm_message", message);
         newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
         context.startActivity(newIntent);
        } catch (Exception e) { 
         e.printStackTrace();

        } 
} 
}

マニフェストファイルに以下を追加します

 <receiver android:name=".ShortTimeEntryReceiver"
                      android:enabled="true"
                      android:process=":remote"> 
            </receiver>
于 2012-07-26T14:03:55.647 に答える
1

私が使用するこの機能は、「設定」パラメータに応じてアラームを設定または解除します

public static void SetAlarm(Context c, long AlarmTime, int ItemID, String Message, Boolean Set) {
    Intent intent = new Intent(c, AlarmReceiver.class);
    intent.putExtra("Message", Message);
    intent.putExtra("ItemID", ItemID);

    PendingIntent sender = PendingIntent.getBroadcast(c, 8192 + ItemID, intent, PendingIntent.FLAG_UPDATE_CURRENT);

            // Clear the seconds to 0 for neatness
    Calendar ca = Calendar.getInstance();
    ca.setTimeInMillis(AlarmTime);
    ca.set(Calendar.SECOND, 0);
    AlarmTime = ca.getTimeInMillis();

    // Get the AlarmManager service
    AlarmManager am = (AlarmManager) c.getSystemService(Context.ALARM_SERVICE);
    if (Set) {
        am.set(AlarmManager.RTC_WAKEUP, AlarmTime, sender);
    } else {
        am.cancel(sender);
    }
}

次に、アラームを処理し、やりたいことを実行するブロードキャスト レシーバーが必要になります。

public class AlarmReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    try {
        Bundle bundle = intent.getExtras();
        String Message = bundle.getString("Message");
        int ItemID = bundle.getInt("ItemID");

        // Do what you want to do, start an activity etc

    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

于 2012-07-26T13:48:02.897 に答える