2017-12-23 26 views
-1

私は、のトーストを毎日午後8時に言うと、簡単なアンドロイドアプリを作りたいと思っています。 どうすればよいですか?私は何に依存すべきか?アラームマネージャーと放送受信機? と放送ファイルにどのように私は2つのイベント、警報放送と、この発信アクション毎日特定の時間にトーストを表示

if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) { 

if (intent.getAction().equals(TelephonyManager.ACTION_PHONE_STATE_CHANGED)) { 
+0

なぜあなたは 'Intent.ACTION_NEW_OUTGOING_CALL'を使用しますか? – mrid

+0

これはちょうど私が必要とするものを説明するための例です – user7216286

+0

私を助けることができますか?毎日午後8時に乾杯をする方法? – user7216286

答えて

5

を使用して新しい着信SMSの放送を受信間で定義することができAlarmReceiver.java

public class AlarmReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // any action you want to perform will come here 
     Toast.makeText(context, "I'm running", Toast.LENGTH_SHORT).show(); 
    } 
} 

MainActivity.java

public class MainActivity extends Activity { 
    private PendingIntent pendingIntent; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     /* Retrieve a PendingIntent that will perform a broadcast */ 
     Intent alarmIntent = new Intent(MainActivity.this, AlarmReceiver.class); 
     pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, alarmIntent, 0); 

     setAlarm(); 

    } 

    private void setAlarm() { 
     AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
     int interval = 1000 * 60 * 20; 

     /* Set the alarm to start at 8.00 PM */ 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(System.currentTimeMillis()); 
     calendar.set(Calendar.HOUR_OF_DAY, 20); 
     calendar.set(Calendar.MINUTE, 00); 

     /* Repeating on every 20 minutes interval */ 
     manager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 
      1000 * 60 * 20, pendingIntent); 

    } 

    public void cancelAlarm() { 
     AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
     manager.cancel(pendingIntent); 
     Toast.makeText(this, "Alarm Canceled", Toast.LENGTH_SHORT).show(); 
    } 

以下のクラスは、彼は装置の再起動後もアラームを発する。

DeviceBootReceiver.java

マニフェストで
public class DeviceBootReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) { 
      /* Setting the alarm here */ 
      Intent alarmIntent = new Intent(context, AlarmReceiver.class); 
      PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, 0); 

      AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
      int interval = 8000; 
      manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval, pendingIntent); 

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

追加許可

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 

とレシーバ

<receiver android:name=".AlarmReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
     </intent-filter> 
</receiver> 

<receiver android:name=".DeviceBootReceiver" 
     android:enabled="false"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
     </intent-filter> 
</receiver> 
+0

ありがとう..しかし、私は時間を変更し、トウをした後に設定して...トーストを走らせています...これは私が午後8時に現れるように変えなければならないトーストですか? – user7216286

+0

@ user7216286あなたはそれを動作させることができますか? – mrid

+0

それはうまくいきますが、私は時間が16:25に設定され、トーストは16:26に表示されます。 – user7216286

関連する問題