0

我有一個類叫做StopAlarmReceiver和另一個BootHandler重啓後不能正常工作的Android報警重置

BootHandler在引導之前設置的重新啓動後重置警報。我的問題是,BootHandler設置報警,但沒有被解僱

Manifest文件中的條目。

<receiver 
     android:name="com.sign.android.myscheduler.app.StopAlarmReceiver" 
     android:enabled="true" 
     android:exported="true" > 
    </receiver> 

    <receiver 
     android:name="com.sign.android.myscheduler.app.BootHandler" 
     android:enabled="true" 
     android:exported="true" > 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
     </intent-filter> 
    </receiver> 

BootHandler中的代碼。

AlarmManager mgr= (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
Intent i = new Intent(context, StopAlarmReceiver.class); 
PendingIntent pi = PendingIntent.getService(context, 1, i, 0); 

long time = sharedPreferences.getLong("Old_time", 0); 
Log.e(TAG, "New time: " +new Date(SystemClock.elapsedRealtime() + time)); 

mgr.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + time, 5000, pi); 
+0

你是否持有'BOOT_COMPLETED'權限?你在這個應用程序中運行一個活動? – CommonsWare

+0

是的我有<使用權限android:name =「android.permission.RECEIVE_BOOT_COMPLETED」/>權限。用戶可以通過登錄到應用程序活動來設置警報。然後關閉應用程序。 –

回答

0

清單 只寫報警兩個接收器1和1手柄引導

<receiver 
     android:name="packagename.AlarmReceiver" 

     > 

    </receiver> 

    <!-- Will not be called unless the application explicitly enables it --> 
    <receiver android:name="com.avion.contact_app.DeviceBootReceiver" 
     android:enabled="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
     </intent-filter> 
    </receiver> 

添加以下權限

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


<uses-permission android:name="com.android.alarm.permission.SET_ALARM" /> 

在DeviceBootReceiver類首先檢查的意圖行動

@Override 
public void onReceive(Context context, Intent intent) { 
    SharedPreferences prefs = context.getSharedPreferences(
      "DefaultReminder", context.MODE_PRIVATE); 

    if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) 

    { 
//do whatever you want after reboot or fire alarm again 
} 
}