2017-12-23 35 views
-1

토스트을 매일 표시하는 간단한 안드로이드 응용 프로그램을 만들고 싶습니다. 매일 정오 8시에 말합니다. 어떻게 할 수 있습니까? 내가 무엇을 의존해야 하는가? 알람 매니저와 브로드 캐스트 리시버? 및 방송 파일에 어떻게 두 가지 이벤트, 경보 방송이 발신 통화 액션매일 특정 시간에 건배를 표시합니다.

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