1

Я пытаюсь начать деятельность, когда нахожусь перезагрузить телефон, то его открытое приложение или показать мне тост при загрузке завершеназагрузки Полная трансляция не работает

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

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

} 

это мой Broadcaste код приемника

class MyIntentService extends Service { 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public void onCreate() { 
    super.onCreate(); 
    Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); 
    // do something when the service is created 
} 

} 

Это мой код обслуживания.

Manifest

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission> 
<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 


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

    <service android:name=".MyIntentService"></service> 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme.NoActionBar"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

</application> 

Пытаюсь много diffrent кода, но не одна работа для меня, так может кто-нибудь помочь мне исправить этот код

+0

Является ли 'MyReceiver' отдельным классом? или внутренний класс другого класса.? – Bharatesh

+0

да мой приемник отличается от класса – ajay

ответ

0

Добавить это в BroadcastReceiver классе

public void onReceive(Context context, Intent intent) { 
    if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) { 
     Intent pushIntent = new Intent(context, SyncData.class); 
     context.startService(pushIntent); 
     Log.e("BroadCast Received", "ON BOOT COMPLETE"); 
    } 
} 

и удалите эти две линии android:enabled="true" android:exported="false"

+0

Этот код существенно не отличается от того, что OP уже имеет. Это ничего не изменит. –

+0

Еще не работает – ajay

+0

как вы проверили? –

1

Ваш BroadcastReceiver никогда не дозвонились, потому что у вас есть это в манифеста запись для него:

android:exported="false" 

Удалить это.

ПРИМЕЧАНИЕ. Вам также необходимо убедиться, что ваше приложение запускается по крайней мере один раз вручную после его установки на телефоне. В противном случае ваш BroadcastReceiver НЕ получит BOOT_COMPLETE Intent.

ПРИМЕЧАНИЕ: Кроме того, использование Toast в качестве средства отладки не является очень хорошей идеей. Вы должны написать сообщения в logcat и использовать это, чтобы определить, запускается ли ваш Service и т. Д. Toast не является надежным инструментом отладки.

+0

не работает после удаления, экспортированного или активированного из menifeast – ajay

+0

«не работает» на самом деле не очень полезно. Добавьте логин в свой 'onReceive()' и посмотрите, вызвано ли это вызовом при загрузке. Кроме того, вы уверены, что вы запустили приложение (запустите первый «Активность», по крайней мере, один после установки)? –

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