1

我創建了一個擴展BroadcastReceiver的接收器。這用於根據用戶選擇的時間執行每日重複的通知。出於某種原因,我不能讓這個工作。我很擔心,我正在從號碼選取者那裏得到錯誤的時間,但我是編程新手,可以使用一些幫助。先謝謝你。如果您看到任何錯誤,請告訴我。使用接收器創建重複通知(BroadcastReceiver)

這是我的主要活動(MyActivity)

公共類MyActivity延伸活動{

TimePicker timePicker; 
Button setAlarm; 
private int hour; 
private int minute; 
PendingIntent pendingIntent; 
int AM_PM; 

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

    timePicker = (TimePicker) findViewById(R.id.timePicker); 
    setAlarm = (Button) findViewById(R.id.setUpAlarm); 

    setAlarm.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      setAlarm(); 
     } 
    }); 



} 

private void setAlarm() { 


    int hour = timePicker.getCurrentHour(); 
    int minute = timePicker.getCurrentMinute(); 
    long time = 60 * hour + minute; 



    AlarmManager alarmMgr = (AlarmManager) getSystemService(ALARM_SERVICE); 
    Intent intent = new Intent(this, NotifyService.class); 
    PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, intent, 0); 

    //create alarms 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 
    calendar.set(Calendar.HOUR_OF_DAY, hour); 
    calendar.set(Calendar.MINUTE, minute); 


    // AlarmManager.INTERVAL_DAY. 
    alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 
      AlarmManager.INTERVAL_DAY, alarmIntent); 

} 

這裏是我的Notification類(擴展BroadcatsReceiver)

public class NotifyService extends BroadcastReceiver { 
public NotifyService() { 
} 

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



     //generate notification              // should be splash activity 
     PendingIntent pi = PendingIntent.getActivity(context, 0, new Intent(context, MyActivity.class), 0); 
     Notification notification = new NotificationCompat.Builder(context) 

       .setContentTitle(null) 
       .setContentText("Your tip for today is ready") 
       .setSmallIcon(R.drawable.ic_launcher) 
       .setContentIntent(pi) 
       .build(); 

    } 

// dont forget to compile "com.android.support:support-v4:18.0.+" 



} 

這裏是我的清單

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





<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 

    <activity 
     android:name=".MyActivity" 
     android:label="@string/app_name" > 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <receiver 
     android:name=".NotifyService" 
     android:enabled="true" 
     android:exported="true" > 
    </receiver> 

</application> 

回答

0

不要在Android清單中使用接收器和過濾器。創建一個「明確的意圖」,而不是使用意向過濾器。這樣,

意圖我=新的意圖(你的隨機意圖操作名稱)。

這應該解決您的問題

+0

更多詳情請... – emiraslan 2017-07-01 19:25:23