2011-06-30 16 views
0

我目前正在使用廣播接收器接收BOOT_COMPLETED操作的應用程序。接收器在AndroidManifest.xml中靜態註冊。安裝軟件包後廣播接收器不能立即工作

它適用於android 2.2以後的下一次啓動,但不是3.1。使用3.1時,我必須在廣播接收器啓動時獲取BOOT_COMPLETED操作之前啓動應用程序一次。

我懷疑在3.1版本中發生了一些變化,導致我的接收器在應用程序啓動一次之前處於非活動狀態。

有沒有人見過這個或知道如何制止這種行爲?任何幫助將不勝感激。謝謝,湯姆。

的AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.test.receiver" 
    android:versionCode="1" 
    android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="8" /> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
    <application 
    android:icon="@drawable/icon" 
    android:label="@string/app_name"> 
    <activity android:name=".MainActivity" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <receiver android:name="TestReceiver" android:enabled="true"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
    </receiver> 
    </application> 
</manifest> 

TestReceiver.java:

package com.test.receiver; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

public class TestReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
    Log.i("TestReceiver", "onReceive() was called");  
    } 
} 

MainActivity.java:

package com.test.receiver; 
import android.app.Activity; 
import android.os.Bundle; 

public class MainActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    } 
} 
+0

您可以嘗試將targetSdkVersion添加到11或12.我知道Android在新的sdk設備上使用舊的sdk應用程序時會使用兼容性代碼。所有targetSdkVersion都會說你已經通過特定的API進行了測試,因此Android可以刪除兼容性代碼並在新的sdk上完全運行應用程序。 – Spidy

+0

Spidy,我已經嘗試了8,9,10,11和12.該應用程序在3.1中仍然表現相同。感謝您的輸入。 –

回答

4

我發現這是一個3.1政策變化。安裝後,應用會保持不活動狀態,直到用戶第一次啓動該應用。