2016-04-27 2 views
4

Я хочу запустить приложение автоматически при перезагрузке телефона. Я добавил эти строки в мой код:Запуск приложения при перезагрузке в Android

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

    if (intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)) { 
     Intent serviceIntent = new Intent(context, MyActivity.class); 
     context.startService(serviceIntent); 
    } 
} 

И я добавил эти строки в мой манифест:

<receiver 
     android:name=".BootComplete" 
     android:enabled="true" 
     android:exported="false" > 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
    </receiver> 

и это разрешение:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" > 
</uses-permission> 

Он работает должным образом, когда MyActivity класса содержит только некоторые фоновые задачи. Например, когда я хочу включить светодиод. Но когда я хочу играть в медиа (например, видео), это не работает. Просто говорит, что служба началась и ничего не играет.

Как это исправить? Есть ли что-то, что я должен добавить в код?

+0

Вы использовали монитор Android для просмотра вашего журнала? –

+0

Почему вы вызываете функцию «Сервис»? – JoxTraex

+0

@JoxTraex Я нашел их, выполнив поиск в Stack. Есть ли лучший способ? –

ответ

0

ли это изменение в BroadcastReceiver:

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

    if (intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)) { 
     Intent serviceIntent = new Intent(context, MyActivity.class); 
     // Change is here... 
     serviceInten.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startService(serviceIntent); 
    } 
} 

В манифесте:

<receiver 
     android:name=".BootComplete" 
     android:enabled="true" 
     android:exported="true" 
     android:permission="android.permission.RECEIVE_BOOT_COMPLETED" > 
     <intent-filter android:priority="500"> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 

      <category android:name="android.intent.category.DEFAULT" /> 

      <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 
     </intent-filter> 
</receiver> 

И оставить разрешение, как это.

1

Проблема не в вашем коде! Это о Android-устройстве.

Когда устройство загружается, вы получаете трансляцию. Но обратите внимание, когда вы получаете эту трансляцию, SD CARD все еще заполняется, и вы не можете получить к ней доступ. Если этот носитель находится на SD-карте, вы не можете его воспроизвести.

Кроме того, вы должны обратить внимание на что-то еще: если пользователь установит ваше приложение на своей SD-карте, этот широковещательный приемник никогда не запустится. Итак, если вы хотите предотвратить проблему на некоторых устройствах, в вашем манифесте, выберите внутренний для своего места установки.

+0

Спасибо, что ответили. Я не хочу выпускать свое приложение. Я просто хочу иметь его в своем устройстве. И на моем устройстве нет карты памяти. Есть ли способ сделать это? –

+0

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

Смежные вопросы