2012-01-19 46 views
0

我正在創建一個使用服務組件的服務,我想要始終在後臺運行應用程序。假設我關掉手機,當我在手機上關閉手機時,即自動關機。無法重新啓動廣播接收器?

我試圖將此代碼

AndroidManifest.xml中

<receiver android:name=".receiver.ConnectionReceiver"> 
<intent-filter> 
<action android:name="android.intent.action.BOOT_COMPLETED" /> 
</intent-filter> 
</receiver> 

和廣播接收器類中添加以下代碼 更新

private class ConnectionReceiver extends BroadcastReceiver{ 

     private Timer mTimer; 
     private TimerTask mTimerTask; 
     private long interval; 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
      PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, ConnectionReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT); 
      am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + interval, interval, pi); 
       { 
       calGps(); 
       } 
       } 
+0

添加權限「<使用許可權的android:NAME =」 android.permission.RECEIVE_BOOT_COMPLETED「/>」 –

+0

我已經加入該權限 – Mercy

+0

請張貼ConnectionReceiver類 – Lucifer

回答

0

Leema Rose

你想要的設備啓動之後啓動您的服務/活動。檢查下面的鏈接,您將瞭解如何使用BroadcastReceiver。

Autostart an application at bootup

Start Service at boot

我希望它可以幫助你。

新建答案:

添加<category android:name="android.intent.category.HOME" />在接收器的清單文件的意圖過濾器。清單文件

+0

我已經嘗試鏈接 – Mercy

+0

檢查更新的答案。 –

0

您必須添加一個清單權限項:

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

(當然,您應該列出您的應用使用的所有其他權限)。

然後,實現BroadcastReceiver類,它應該是簡單且快速的可執行文件。最好的方法是在這個接收器中設置一個警報來喚醒你的服務(如果沒有必要保持它的運行,就像Prahast寫的那樣)。

public class BootUpReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
    PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, MyService.class), PendingIntent.FLAG_UPDATE_CURRENT); 
    am.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + interval, interval, pi); 
}} 

然後,添加一個接收器類的清單文件:

<receiver android:enabled="true" android:name=".receivers.BootUpReceiver" 
    android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</receiver> 
+0

好的,你可以請指導我與代碼如何申報先生, – Mercy

+0

請參閱,我已更新代碼Leema – Lucifer

+0

@lucifier我試過以上編碼。但我的服務沒有啓動 – Mercy