2014-06-23 49 views
1

在啓動完成我開始一個服務,它在模擬器上完美運行,但是當我在android手機上運行它廣播接收器不啓動服務。 Infact應用程序甚至沒有從設備接收啓動完成的廣播。啓動接收器在模擬器上工作,但不是Android實際電話

這是我的清單文件:

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="14" /> 

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

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_logo" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 

    <receiver 
     android:name="com.darkrai.smsbasedcontroller.BootReciever" 
     android:enabled="true" 
     android:exported="false" > 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
    </receiver> 

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

這是我的廣播reciever類。

public class BootReciever extends BroadcastReceiver{ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    context.startService(new Intent(context, UpdateService.class)); 
    Log.d("Boot", "Boot Reciever"); 
} 

回答

0

BroadcastReceiver - 任何行動 - 直到設備上的東西使用顯式Intent開始你的組件之一將不會收到任何廣播。通常,這是用戶在發射器上點擊你的Activity的形式。

所以,加LAUNCHERActivity,點擊它,然後直到您將收到的廣播:

  • 用戶強制停止你(通常由設置應用程序的方式),或
  • 的用戶卸載您的應用程序
+0

但是,如果我希望設備在啓動完成後立即啓動服務,該怎麼辦。我必須在上面的代碼中進行修改。 – user3768061

+0

@ user3768061:我已經回答了。添加一個'LAUNCHER'活動。用戶啓動後,您的接收器將工作,直到用戶強制停止或卸載您的用戶。在用戶啓動活動之前,您的接收器將無法工作。 – CommonsWare

0

某些設備(主要是HTC)有一個名爲快速重啓不觸發BOOT_COMPLETED功能。相反,他們觸發QUICKBOOT_POWERON

因此還要添加此權限<action android:name="android.intent.action.QUICKBOOT_POWERON" />。 即

<receiver 
     android:name="com.darkrai.smsbasedcontroller.BootReciever" 
     android:enabled="true" 
     android:exported="false" > 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
     </intent-filter> 
    </receiver> 
+0

我試過了,但它沒有幫助。 – user3768061

相關問題