2013-05-19 60 views
1

我試圖綁定一個服務,簡單地發出一個通知「引導」,然後另一個服務正在運行。我用我的清單如下:BroadcastReceiver沒有被通知BOOT_COMPLETED

<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    package="my.project" 
    android:versionCode="1" 
    android:versionName="1.0" 
> 

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

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 

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

     <service 
      android:name=".Manager" 
     /> 

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

    </application> 

</manifest> 

不幸的是,當我重新啓動我的設備,沒有顯示器,它似乎像服務永遠不會啓動。

這裏是我的BroadcastReceiver子類實現:

@Override 
    public void onReceive(Context context, Intent intent) { 

     Log.d("Test", "Bootstrap run!"); 

     int notificationId = 1; 
     NotificationCompat.Builder startNotification = new NotificationCompat.Builder(context) 
      .setSmallIcon(R.drawable.ic_launcher) 
      .setContentTitle("Glance") 
      .setContentText("Starting the Glance service.") 
     ; 
     NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); 
     notificationManager.notify(notificationId, startNotification.build()); 

     // 
     // Run the service. 
     // 
     Intent startServiceIntent = new Intent(context, Manager.class); 
     context.startService(startServiceIntent); 

    } 

這是造成事情沒有工作對我可能是做錯了或在這裏失去了什麼建議?

謝謝!

回答

3

如果您在Android 3.1上進行測試,請將活動添加到您的應用程序,然後運行您的活動。從Android 3.1開始,清單註冊的BroadcastReceivers將被阻止,直到手動運行其中一個組件爲止,這通常意味着用戶已啓動其中一項活動。有關更多詳細信息,請參閱this nearly-two-year-old blog post

相關問題