2011-06-30 11 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に追加しようとしている可能性があります。新しいsdkデバイスで古いsdkアプリケーションを使用する場合、互換性コードを使用していることがわかりました。すべてのtargetSdkVersionはあなたが特定のAPIを使ってテストしたと言っているので、互換性コードを削除して、新しいSDKでアプリケーションを完全に実行しても問題ありません。 – Spidy

+0

Spidy、私は8,9,10,11,12を試しました。アプリは3.1でも同じように動作します。しかし、入力をありがとう。 –

答えて

4

私は、これは3.1の政策変更で分かりました。ユーザーが初めて起動するまで、インストール後にアプリは非アクティブのままです。

関連する問題