Broadcast Receiver не работает сразу после установки пакета - PullRequest
0 голосов
/ 30 июня 2011

В настоящее время я работаю над приложением, которое получает действие BOOT_COMPLETED с помощью Broadcast Receiver.Приемник статически зарегистрирован в 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);
  }
}

1 Ответ

4 голосов
/ 02 июля 2011

Я узнал, что это изменение политики в 3.1. Приложение остается неактивным после установки, пока пользователь не запустит его в первый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...