Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我无法在应用程序关闭后保持广播接收器运行_Android - Fatal编程技术网

Android 我无法在应用程序关闭后保持广播接收器运行

Android 我无法在应用程序关闭后保持广播接收器运行,android,Android,编辑 谢谢大家的回复, 不幸的是,在Android Pie之后不可能完成这项工作 我无法在应用程序关闭后保持广播接收器运行,我尝试了许多方法,但都失败了 public class BoothService extends Service { private final Handler mHandler = new Handler(); public BoothService() { } private String INCOMING_CALL_ACTION = "

编辑

谢谢大家的回复, 不幸的是,在Android Pie之后不可能完成这项工作

我无法在应用程序关闭后保持广播接收器运行,我尝试了许多方法,但都失败了

public class BoothService extends Service {
    private final Handler mHandler = new Handler();
    public BoothService() {
    }
    private String INCOMING_CALL_ACTION = "android.intent.action.PHONE_STATE";
    private final BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String mAction = intent.getAction();
            if(mAction.equals(INCOMING_CALL_ACTION)) {
                Toast.makeText(context, "BoothService", Toast.LENGTH_SHORT).show();
            }

        }
    };

    public void onCreate() {
        IntentFilter intentToReceiveFilter = new IntentFilter();
        intentToReceiveFilter.addAction(INCOMING_CALL_ACTION);
        this.registerReceiver(receiver, intentToReceiveFilter, null, mHandler);
    }
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}
此服务从activitymain运行

  Intent BS  = new Intent(ActivityMain.this, BoothService.class);
  startService(BS);
我的目的是捕获传入呼叫,即使应用程序已关闭

我的舱单

<receiver
    android:name=".RingReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.PHONE_STATE" />
    </intent-filter>
</receiver>
允许

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

顺便说一句,这段代码在模拟器中工作,但在实际设备上不起作用。我尝试过使用JobService注册隐式广播,因为应用程序关闭时,after Nout隐式广播不起作用。 因此,请将您的广播接收器注册到jobservice,并将该服务与jobservice一起使用

或者你也可以参考这个链接


您需要在服务中写入带有通知的startForeground,并且应该在清单中使用属性android:stopWithTask=false定义您的服务。否则,系统将在您最近关闭应用程序时立即终止您的应用程序和服务。@FurkanYurdakul我正在尝试now@FurkanYurdakul不幸的是,它不起作用。你所做的还不够。您需要在清单中的服务声明中使用android:stopWithTask=false,并且需要创建一个具有粘性通知的前台服务。要执行此操作,请通过服务通知呼叫startForeground。然后您将看到服务将继续运行,您将能够接收广播。@FurkanYurdakul我的目的不是通知,我的目的是广播接收器,我想知道您是否误解了或我无法理解您是的,我看到了,但您必须在activity或jobservice中注册广播,请不要在服务中注册,因为当应用程序关闭或终止时,版本后的oreo服务在后台不工作。那时候你的接受者也不工作了,你可以参考一下这个也很重要的bunu yapıyorum yanlımı?您的示例广播接收器,我的问题是另一个,我希望在应用程序关闭后保持广播接收器运行这就是为什么我要说向Jobservice中的jobscheduler注册广播接收器