Не удается принять трансляцию в ICS - PullRequest
5 голосов
/ 14 марта 2012

Я пишу 1 приложение для Android 4.0, и оно запускается через широковещательный приемник.Мой код указан ниже:

В AndroidManifest.xml:

 <uses-permission android:name="android.permission.INTERNET" />
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <receiver android:name="com.Android.Exercise.StartUpReceiver"
            android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <!--<action android:name="StartInstrument" /> 
                <action android:name="PrintControlName" />      -->     
            </intent-filter>
        </receiver>         
        <service android:enabled="true" android:name="StartAUT_Service">
            <intent-filter>
                <action android:name="com.Android.Exercise.StartAUT_Service" />
            </intent-filter>
        </service>  
    </application>

В классе StartUpReceiver:

public class StartUpReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {

        Log.i("Broadcast", "onReceive");

        Intent i = null;

        if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
             i = new Intent(context, StartAUT_Service.class);          
             i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        }

        context.startService(i);            
    }       
}

После перезагрузки устройства я не могу получать broardcast.Пожалуйста, помогите мне, большое спасибо

Ответы [ 3 ]

7 голосов
/ 25 апреля 2012

Начиная с Android 3.0, было представлено состояние приложения.Все приложения теперь устанавливаются с состоянием, настроенным как неактивное, что делает все его BroadcastReceivers неактивными.

Чтобы сделать состояние активным, пользователь должен запустить приложение как минимум один раз, и ОС автоматически активирует приложение и всеего BroadcastReceivers.

В вашем случае вам нужно добавить действие, будь то лицензионное соглашение или страница справки.Это создаст значок для вашего приложения, чтобы пользователь мог щелкнуть и активировать приложение.

Обратите внимание, что состояние приложения будет возвращено обратно в неактивное состояние, если пользователь принудительно закроет приложение.

Я столкнулся с подобной проблемой: Android ICS не получает смс данных

Я надеюсь, что это решит вашу проблему или, по крайней мере, поставит вас на правильный путь.

С уважением, Ахмад

1 голос
/ 14 марта 2012

Попробуйте

 <uses-permission android:name="android.intent.action.BOOT_COMPLETED" />

ниже разрешений на использование Интернета

0 голосов
/ 14 мая 2012

Вам необходимо сделать следующее, чтобы преодолеть эту функцию безопасности.

Если ваш уровень API ниже 12, то перед вещанием установите следующее:

i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | 32);

В противном случае добавьте следующий флаг, чтобы включить пакеты, помеченные как Остановлено тоже:

i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent. FLAG_INCLUDE_STOPPED_PACKAGES);
...