Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.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
Java 手机开机时自动启动服务_Java_Android - Fatal编程技术网

Java 手机开机时自动启动服务

Java 手机开机时自动启动服务,java,android,Java,Android,我解释我想要我的应用程序做什么: 用户打开电话,我的服务启动并执行他的代码。 问题是目前服务还没有启动…我看不到日志或toast 这是舱单: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="complic.bevoip"> <uses-permission andr

我解释我想要我的应用程序做什么:

用户打开电话,我的服务启动并执行他的代码。 问题是目前服务还没有启动…我看不到日志或toast

这是舱单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="complic.bevoip">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
服务呢

public class SipService extends Service {

    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
        Log.d("BeVoip", "service partito");
        startActivity(new Intent(this, MainActivity.class));
        return Service.START_STICKY;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Toast.makeText(this, "Service Destroy", Toast.LENGTH_LONG).show();
    }
}

您的
BroadcastReceiver
未被调用,因为针对Android 7.0(API级别24)及更高版本的应用程序必须使用
registerReceiver(BroadcastReceiver,IntentFilter)
注册以下广播

在清单中声明接收者不起作用

您必须按照以下方式动态注册接收器

    Receiver  myReceiver = new Receiver ();
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(Intent.ACTION_BOOT_COMPLETED);
    intentFilter.addDataScheme("package");
    getApplicationContext().registerReceiver(myReceiver, intentFilter);
关于
android:process=“:remote”

广播接收器应在其中运行的
过程。应用程序的所有组件都在为应用程序创建的默认进程中运行。它与应用程序包同名

如果分配给此属性的名称以冒号(“:”)开头,则会在需要时创建应用程序专用的新进程,并在该进程中运行广播接收器

您可以在此处阅读有关接收器属性的信息:

您可以在此处参考
BroadcastReceiver
的文档:
您的
广播接收器
未被调用,因为针对Android 7.0(API级别24)及更高版本的应用程序必须使用
注册器Receiver(BroadcastReceiver,IntentFilter)注册以下广播

在清单中声明接收者不起作用

您必须按照以下方式动态注册接收器

    Receiver  myReceiver = new Receiver ();
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(Intent.ACTION_BOOT_COMPLETED);
    intentFilter.addDataScheme("package");
    getApplicationContext().registerReceiver(myReceiver, intentFilter);
关于
android:process=“:remote”

广播接收器应在其中运行的
过程。应用程序的所有组件都在为应用程序创建的默认进程中运行。它与应用程序包同名

如果分配给此属性的名称以冒号(“:”)开头,则会在需要时创建应用程序专用的新进程,并在该进程中运行广播接收器

您可以在此处阅读有关接收器属性的信息:

您可以在此处参考
BroadcastReceiver
的文档:

可能重复的@crammeur该答案对我没有帮助…这是你收到的广播吗?这是文档可能重复的@crammeur该答案对我没有帮助…这是文档收到的广播吗?这是文档谢谢,但是…如果用户打开应用程序一次,这将起作用,但我希望服务在手机启动后立即启动是开机了,还是我说错了什么?不管怎样,我把那段代码放在了主活动中,但它仍然不工作。请将以下属性设置为receiver
android:exported=“true”android:enabled=“true”
谢谢,但是……如果用户打开应用程序一次,但我希望在手机通电后立即启动服务,或者我说了一些错误的话,这将起作用。无论如何,我将这段代码放在主活动中,但它仍然不起作用。请在menifest文件中将以下属性设置为receiver
android:exported=“true”android:enabled=“true”
    Receiver  myReceiver = new Receiver ();
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(Intent.ACTION_BOOT_COMPLETED);
    intentFilter.addDataScheme("package");
    getApplicationContext().registerReceiver(myReceiver, intentFilter);