Android BroadcastReceiver, автоматический запуск службы после перезагрузки устройства

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

Вот мой код для

BootCompleteReceiver.java

package com.example.newbootservice; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class BootCompleteReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent service = new Intent(context, MsgPushService.class); context.startService(service); } } 

MsgPushService.java

 package com.example.newbootservice; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.widget.Toast; public class MsgPushService extends Service { @Override public void onCreate() { super.onCreate(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); return Service.START_STICKY; } @Override public void onDestroy() { super.onDestroy(); Toast.makeText(this, "Service Destroy", Toast.LENGTH_LONG).show(); } @Override public IBinder onBind(Intent arg0) { return null; } } 

MainActivity.java (не знаю, нужно ли мне это)

 package com.example.newbootservice; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.view.Menu; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); startService(new Intent(getBaseContext(), MsgPushService.class)); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } } 

манифест

                   

Я хочу, чтобы служба запускалась автоматически после перезагрузки, а не запускала ее вручную.

Сначала сделайте это

1) В элементе :

  

РЕДАКТИРОВАТЬ :

Простое и умное решение:

-> Автозагрузка на загрузку устройства

Вы забыли о разрешениях

  

Хотя все приведенные выше ответы были правильными, однако от Android Oreo они поставили некоторые ограничения на Фоновые службы.

Проверьте пределы выполнения фона, чтобы узнать больше о фоновых ограничениях в Android O.

Вы не можете запускать службу непосредственно из BroadCastReceiver, когда приложение находится в фоновом режиме.

Тем не менее, вы можете запустить службу переднего плана от получателя, вызвав startForegroundService() или использовать JobIntentService, поскольку нет такого ограничения с JobIntentService.

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

    
Давайте будем гением компьютера.