Android-автозапуск (приложение запускается дважды) - PullRequest
1 голос
/ 13 февраля 2012

Я хотел бы запустить свое приложение после завершения загрузки моего устройства.Для этого я нашел полезный код в интернете:

public class MyBootCompleteReceiver extends BroadcastReceiver
{

    @Override
    public void onReceive(Context context, Intent intent) 
    {
        if(intent.getAction() != null && intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) 
        {  
           Intent pushIntent = new Intent(context, MainActivity.class);  
           pushIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

           context.startActivity(pushIntent);  
        } 
    }
}

И запись в манифесте:

    <receiver android:name="MyBootCompleteReceiver" android:enabled="true" android:exported="false" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
            <category android:name="android.intent.category.DEFAULT" />          
        </intent-filter>      
    </receiver> 

Теперь, если я загружаю свое устройство, приложение запускается дважды.Затем я попытался заменить флаг «NEW_TASK» на «REORDER_TO_FRONT» (я также прочитал это в Интернете), но если я это сделаю, мое приложение вылетает при загрузке.Также, если я уберу все флаги, он тоже рухнет.

Надеюсь, вы поможете!

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

Итак ...

после долгих долгих испытаний я обнаружил, что проблема должна быть в моем физическом планшете (asus eee pad transtem android версия 3.2.1).

Поскольку я пыталсяэто в эмуляторе (Android версии 3.2) и там исходный код, который я разместил (в верхней части этой темы) работал довольно хорошо.Нет запуска дважды приложения и никаких ошибок.Даже если вы удалите «pushIntent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK);»код это работает.

Так что, похоже, мне нужно ждать обновления (возможно, на Android 4.0).

Надеюсь, это поможет кому-то, у кого такая же проблема.

0 голосов
/ 13 февраля 2012

Используйте фильтр намерения загрузки в своей активности в файле манифеста.

<activity ....>
     <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
        <category android:name="android.intent.category.DEFAULT" />          
    </intent-filter>      
</activity>

Надеюсь, это поможет ...

...