在我的代码中,警报管理器无法正常工作。我的应用程序运行状况良好。请参阅我的代码。
Intent myIntent = new Intent(getApplicationContext(), AndroidAlarmService.class);
myIntent.putExtra("class", "home");
PendingIntent pendingIntent = PendingIntent.getService(this, 0,myIntent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),6000,pendingIntent);
和我的android AlarmService类: -
public class AndroidAlarmService extends BroadcastReceiver implements URLs{
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
System.out.println("BroadCast\n");
String name=intent.getStringExtra("class");
if(name.equals("home")){
Intent homeIn=new Intent(context,Home.class);
context.startActivity(homeIn);
}
}
}
清单中的我已经这样做了;
<receiver android:name=".AndroidAlarmService" android:enabled="true" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"></action>
</intent-filter>
</receiver>
为什么它不起作用?
答案 0 :(得分:3)
我得到了答案。我做了以下更改:
Intent myIntent = new Intent(getApplicationContext(), AndroidAlarmService.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,myIntent, 0);
在我的AndroidAlarmService类中:
Intent homeIn=new Intent(context,Home.class);
homeIn.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(homeIn);
答案 1 :(得分:1)
我遇到了同样的问题,直到我发现我的广播接收器放在不同的包装上,而不是一般的。
简单地改变了:
<receiver android:name=".AndroidAlarmService" android:enabled="true" >
有:
<receiver android:name="com.MyCompany.MyPackage.AndroidAlarmService" android:enabled="true" >
答案 2 :(得分:-1)
您是否尝试过更改
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),6000,pendingIntent);
您是否尝试过将6000更改为其他内容?看起来你还有其他一切正确。
编辑:
确保您的清单中有Read_phone_state权限。