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