我正在發出警報,服務是由警報啓動的。我想要服務接收額外的數據,所以使用谷歌搜索我將標誌設置爲Intent.FILL_IN_DATA。下面是我的代碼(僅重要部分顯示) (我有幾個報警模式,和不同的服務被稱爲)Android getExtra()始終獲取服務中的默認值
public static void setAlarm(Context mContext, int mode){
if(mode==A){
intent = new Intent(mContext, AService.class);
}
else{
intent = new Intent(mContext, BService.class);
intent.putExtra(NOTI_MODE, mode);
}
PendingIntent pIntent = PendingIntent.getService(mContext, 0, intent,Intent.FILL_IN_DATA);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
Log.d("set alarm","alarm 4.4");
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pIntent);
} else {
Log.d("set alarm","alarm 4.4 under");
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pIntent);
}
}
public static void cancelAlarm(Context mContext){
AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
PendingIntent pIntent = PendingIntent.getService(mContext, 0, new Intent(mContext, AService.class),Intent.FILL_IN_DATA);
alarmManager.cancel(pIntent);
pIntent = PendingIntent.getService(mContext, 0, new Intent(mContext, BService.class),Intent.FILL_IN_DATA);
alarmManager.cancel(pIntent);
}
服務端代碼(編輯:此代碼是BService類。AService不需要接收附加。)
public int onStartCommand(Intent intent, int flags, int startId) {
int notiMode=intent.getIntExtra(AlarmManagerHelper.NOTI_MODE, -1);
}
但是,結果始終是-1,這意味着沒有額外正被接收。
我的代碼有什麼問題?我在Google上搜索幾個小時,沒有任何希望。
如果您有任何想法請幫助。
在此先感謝。
編輯:setAlarm方法是
公共類AlarmManagerHelper延伸的BroadcastReceiver {}類。
和下面是從AndroidManifest
<receiver android:name="com.example.test.AlarmManagerHelper" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
當我使用
pIntent = PendingIntent.getService(mContext,0,新意圖(mContext,BService.class),0);
代替
pIntent = PendingIntent.getService(mContext,0,新意圖(mContext,BService.class),Intent.FILL_IN_DATA);
在cancelAlarm(),服務獲取額外的所有權利(但報警不取消當然)
我不知道爲什麼setAlarm()當我改變cancelAlarm()不工作..
可以共享包含您的公共靜態無效setAlarm方法的類定義是什麼? – 2014-09-26 22:22:48
我添加了類信息,但我不確定這是什麼意思。(其實我不是英語母語的人,我不確定'class definition'的意思是什麼..) – kwmaeng 2014-09-27 00:26:50