0

私のAndroidiアプリでは、アラーム機能とログアウト機能を使用できます。目覚まし時間を設定した後、ログアウトボタンをクリックしてアプリを終了します。

使ってます

         ExitActivity.this.finish();  
         Intent intent1 = new Intent(ExitActivity.this,PinActivity.class);  
         intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);   
         startActivity(intent1);  

         Intent intent = new Intent(Intent.ACTION_MAIN); 
         intent.addCategory(Intent.CATEGORY_HOME);  
         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         startActivity(intent); 

このコードはアプリを終了し、ホームピン画面に移動し、その後ホーム画面を起動します。これは、アプリに戻るとピンスクリーンが起動するためです。アラームは私が望むものとまったく同じように機能しますが、アラームポップアップメッセージの間、バックグラウンドでピンアクティビティがあります(私は望んでいません)。バックグラウンドでのピンアクティビティを削除したくありません。

これは私のレシーバークラスですか?

     public class ShortTimeEntryReceiver extends BroadcastReceiver{

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

    Toast.makeText(context,"Alarm Working", Toast.LENGTH_SHORT).show();

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

         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) {
         Toast.makeText(context, "There was an error somewhere, but we still received an alarm", Toast.LENGTH_SHORT).show();
         e.printStackTrace();

        }
}

それ、どうやったら出来るの?助けてくれてありがとう。

4

2 に答える 2

3

Androidでアラームを設定するには、アラームマネージャーを使用する必要があります。アラームマネージャはアラームを保持し、アラーム時間に保留中のインテントを起動します。

まず、次のような保留中のインテントを作成します。

 pendingIntent = PendingIntent.getService(CONTEXT, ALARM_ID,  INTENT_TO_LAUNCH, 0);

次に、この保留中のインテントを使用して、次のようなアラームを設定します。

 AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
 alarmManager.set(AlarmManager.RTC_WAKEUP, ALARM_TIME, pendingIntent);

これにより、指定された時間に保留中のインテントが開始されます。

アラームを削除するには、同じALARM_IDで同じ保留中のインテントを再作成する必要があります。

 alarmManager.cancel(pendingIntent);
于 2012-05-23T13:03:21.067 に答える
1

まず、次のような保留中のインテントを作成します。

 pendingIntent = PendingIntent.getService(context, alarm_id, Pass your data with intent,  PendingIntent.FLAG_UPDATE_CURRENT);

次のようなアラームを設定します。

 AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        //19 4.4and above api level
        am.setExact(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis() + AlarmManager.INTERVAL_DAY, sender);
 } else {
        //below 19 4.4
        am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis() + AlarmManager.INTERVAL_DAY, sender);
 }

これにより、指定された時間に保留中のインテントが開始されます。

アラームを削除するには、同じ保留中のインテントを同じもので使用する必要がありますALARM_ID

am.cancel(pendingIntent);

次に、アラームをキャッチするために1つのサービスを作成する必要があります。

于 2016-12-09T13:53:00.863 に答える