2012-01-14 23 views
0

我有一個應用程序使用後臺服務。如果我的手機關機,我的服務關閉。我試圖在手機啓動時重新啓動服務,但尚未啓動。有誰能夠幫助我?我使用此代碼:手機開機時在Android中啓動BroadcastReceiver?

<receiver android:name=".ConnectionReceiver" 
     android:enabled="true" android:exported="false" > 
      <intent-filter>   
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      </intent-filter> 
      </receiver> 
    </application> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

更新 的onReceive()函數

public void onReceive(Context context, Intent intent) { 
      if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { 
       Intent i = new Intent(); 
       i.setAction("com.android.ConnectionReceiver"); 
       context.startService(i); 
      } 
       NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); 

       if(null != info) 
       { 
         String state = getNetworkStateString(info.getState()); 
         if(state.equals("Connected")){ 
          mTimer = new Timer(); 
          mTimerTask = new TimerTask() { 
           @Override 
           public void run() { 
            loginForm.this.runOnUiThread(new Runnable() { 

             @Override 
             public void run() { 


                insertAllGps(); 



            }); 

           } 
          }; 
          mTimer.scheduleAtFixedRate(mTimerTask,180000,180000); 
+0

你的服務裏面有什麼是你試圖做什麼? – confucius 2012-01-14 09:59:00

+0

得到緯度和經度值 – Mercy 2012-01-14 10:00:20

+0

你有這個權限? – confucius 2012-01-14 10:01:29

回答

0

//使用這行不是等於使用equalsIgnoreCase

if (Intent.ACTION_BOOT_COMPLETED.equalsIgnoreCase(intent.getAction()))