【问题标题】:I want to start my App when my android phone is booted [duplicate]我想在我的安卓手机启动时启动我的应用程序[重复]
【发布时间】:2021-09-21 10:27:42
【问题描述】:

我已经阅读了很多关于这个主题的主题。尽管我几乎完成了所有这些,但我无法成功。

我期望的是当 android 启动完成时 BootReceiver.class 收到 BOOT_COMPLETED 消息。然后 BootReceiver.class 执行 MainActivity.class。

这是我的 AndroidManifest.xml。

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

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

    <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/Theme.AutoStart">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

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

    </application>

</manifest>

我的 BootReceiver.java。

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class BootReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")){
            Intent i = new Intent(context, MainActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
        }
    }
}

还有我的 MainActivity.java。

import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = findViewById(R.id.button);

        button.setOnClickListener( view -> {
            System.exit(0);
        });
    }
}

我的代码有什么问题吗? 我的代码已成功编译并执行良好。 但是当我的安卓手机重新启动时,我的应用似乎没有被执行。

我在 Android Studio 4.2.1 上做了一个程序,并使用 SDK Android API level 30。

感谢您提前关注。

【问题讨论】:

标签: java android


【解决方案1】:

我能够通过做两件主要事情来解决这个问题。

  1. 按照 Dan Baruch 在以下链接中编写的解决方法,我将以下内容添加到 AndroidManifest.mxl 文件中。

boot_completed not working on Android 10 Q API level 29

 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
  1. 我已向我的应用授予“显示在其他应用之上”权限。

【讨论】:

    【解决方案2】:

    我想我从下面链接的主题中找到了解决方案。

    boot_completed not working on Android 10 Q API level 29

    我会在检查更多后发布更多详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      • 2012-11-15
      • 2013-03-10
      相关资源
      最近更新 更多