Android 10.0 应用程序在 BOOT 上启动

2024-04-02

我们有一个 Android 应用程序,我们打算在手机启动期间启动/启动。 通过在 Android 10 中尝试一些代码,我们意识到在 Android 8.0 之后无法在启动时启动应用程序。以前在 Android 6 中,这是可能的。 即使在物理设备/手机/模拟器 Android 10 中,我们也在 AutoStart 列表中授予了我们的应用程序权限。 >

我们在 Android 10 中所做的尝试:以下是 3 段代码 - AndroidManifest.xml、MyActivity.java、MyBroadcastReceiver.java

1)AndroidManifest.xml

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<activity android:name=".MainActivity"  android:launchMode="singleTop" android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<receiver android:name=".MyBroadcastReceiver" android:enabled="true" android:exported="true" android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>

2)MyActivity.java

public class MainActivity extends FlutterActivity {
@java.lang.Override
protected void onCreate(android.os.Bundle savedInstanceState) { 
super.onCreate(savedInstanceState);
// "Display pop up window"
    if (!Settings.canDrawOverlays(getApplicationContext())) {
        startActivity(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION));
    }
Log.d(TAG, "-------- onCreate -------"); // this is printed
}
}

3)MyBroadcastReceiver.java

public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
Intent i = new Intent(context, MainActivity.class);
i.setAction(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(i);
Log.d(TAG, "------ tried to launch MainActivity -------"); // this is printed
}
}
}

在启动时启动应用程序可能会让用户感到厌烦。您可以开始一个前台服务 https://developer.android.com/guide/components/foreground-services反而。 BOOT_COMPLETE 意图可以有多种不同的形式,具体取决于您的设备。我试图在这里捕捉到他们所有人。

在你的清单中:

<receiver android:name=".receiver.BootReceiver" // YOUR RECEIVER HERE
        android:enabled="true"
        android:exported="true"
        android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.intent.action.ACTION_BOOT_COMPLETED" />
            <action android:name="android.intent.action.REBOOT" />
            <action android:name="android.intent.action.QUICKBOOT_POWERON" />
            <action android:name="com.htc.intent.action.QUICKBOOT_POWERON" />
            <action android:name="android.intent.action.ACTION_SHUTDOWN" />
        </intent-filter>
    </receiver>

在接收器中:

class BootReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        // START FOREGROUND SERVICE HERE
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 10.0 应用程序在 BOOT 上启动 的相关文章

  • 在 Android 中不断更新新的 JSON

    我有不断变化的 JSON 我需要在 android 中不断更新更改 我该怎么做 我的Android代码是 r getImage JSONObject data new JSONObject r String a data getString
  • Android - 同一行中的两个按钮填充整个宽度

    我在定义相对布局时遇到了一些问题 我有一个带有滚动的列表视图 并且两个按钮始终在列表视图的底部可见 我只是希望我的两个按钮有 50 的宽度 填充该线 这是我的代码
  • 在 Android 4.2.2 和 4.3 上关闭 BluetoothSocket 时出现致命信号 11 SIGSEGV

    我的应用程序在 Android 2 3 3 到 4 1 2 下运行良好 但自从 Android 4 2 2 和 Android 4 3 以来 我有一个 fatal signal 11 SIGSEGV at 0x00 当我关闭蓝牙插座时 我查
  • android setOnLongClickListner 不适用于 onTouch 事件

    我有一个可拖动和缩放的图像视图 但现在我还需要将 setOnLongClickListner 放在我的图像视图上 我已经这样做了 但它不起作用 但是当我禁用 ontouch 事件时它开始工作 谁能告诉我如何解决这个问题 这是我的代码 ima
  • 从片段调用片段

    我想通过单击当前片段中的按钮来调用当前片段中的另一个片段 这是我的主要活动 import android app FragmentManager import android os Bundle import android support
  • 嵌套 CollectionView 和显示(使用 Visual Studio 2019、Xamarin XPlatform Android)

    嵌套 CollectionView 并在另一个中滚动 官方支持吗 显示这些集合问题 请参阅下面的我的数据模型和 XAML 代码 我没有可以放置生成的屏幕图像的站点 namespace Notes Models public class No
  • 此版本的渲染库比您的 ADT 插件版本更新。请更新ADT插件 - 已经更新

    在 Eclipse 上 尽管我使用的是最新的 adt 版本 但我收到此错误 我不确定它是否相关 但这发生在我安装 android m sdk 之后 从这里 https stackoverflow com a 30535515 933050
  • 尝试将 AndroidX 迁移到 Android AppCompat

    从 AndroidX 迁移到 Appcompat 时出现错误 这是日志构建 Manifest merger failed Attribute application appComponentFactory value android sup
  • Eclipse 上的 Android 开发:始终打开新的模拟器

    这应该是一个非常简单的问题 我正在做 Hello Android 教程 我能够将我的应用程序安装到模拟器中 然而 当我再次运行 没有任何更改 时 Eclipse 环境坚持启动一个新的模拟器 而不是连接到现有的模拟器 我该如何解决这个问题 我
  • Hilt:为什么是 ActivityRetainedScoped 与 ViewModelScoped

    我试图理解为什么ActivityRetainedScoped为希尔特的 DI 引入 在我看来 范围与ViewModelScoped应该做 我的印象是作用域是这样工作的 AppScope singleton gt ViewModelScope
  • 围绕右下角对齐图像

    我正在使用相对布局将一个较小的图像叠加在较大的图像之上 我希望较小图像的右下角与较大图像的 B R 角重合 我在布局 XML 中使用边距参数 指定倾斜测量 但这似乎不适用于所有设备和分辨率 在某些情况下 小图像会从边框移动 4 5 像素 是
  • 在处理器生成的类中使用库

    我正在开发一个库来使用注释和处理器生成类 生成的类应该使用Gson来自谷歌的图书馆 我的问题是 我应该在哪里添加 Gson 依赖项 我目前正在将其添加到处理器 build gradle 中 但是当生成类时 找不到 Gson Android
  • 各种 Android 设备的应用程序背景大小

    我正在为所有 Android 设备的应用程序设计背景 我在想图像的大小 以像素为单位 是多少 从开发者网站我发现了以下等式 px dp dpi 160 那么 px 取决于两个变量 首先 dp 我们有 xlarge screens are a
  • 创建一个覆盖视图以覆盖整个活动,包括协调器布局中的工具栏

    我想创建一种覆盖类型的布局 以显示在包括工具栏在内的活动上方 我无法使用任何库来执行此操作 因为我编写的所有内容都是自定义的 我可以通过使用以下代码直接将视图添加到装饰视图来实现它 ViewGroup vg ViewGroup getWin
  • Android编程-多个列表视图的onitemclicklistener不起作用

    在我的活动中 我创建了七个列表视图 并使用 viewpager 在同一活动中在它们之间滑动 然后我有一个 sqlite 数据库填充每个列表视图 我的问题是 onitemclicklistener 不起作用 没有错误 代码执行正常 但列表项点
  • ACTION_SEND 强制通过电子邮件发送

    每次我创建一个从应用程序发送电子邮件的操作时 它都会提示许多选项 包括 QR 客户端 有没有办法强制仅通过电子邮件客户端发送 发送电子邮件的代码 String rec owner email i new Intent Intent ACTI
  • Android 屏幕上的触摸事件

    我想找出当用户触摸 Android 的任何屏幕时发生的任何事件 我发现特定活动的触摸事件 但不是所有屏幕 请给我一个 解决方案 试试这个代码 Override public boolean onTouchEvent MotionEvent
  • 如何在Android模拟器中找到数据库文件的路径?

    我正在 Android 模拟器中执行一些 sqlite 查询 我想知道数据库文件存储在哪个路径 请给我一些如何找到它的想法 如果你能给我一些代码片段 乌尔 s 库马兰 数据库通常存储在 data data your applications
  • 如何在Android中将外部jar文件包含到aar文件中

    我想开发一个解决方案 允许我在 Android 项目的 aar 文件中生成的 SDK 中使用外部 jar 库 我有什么输入 SDK de xx sdk xxx android v1 0 0 外部库 libs xxxx v1 0 0 我在调查
  • 总小时数无法从 Android 插入 MySQL

    我使用以下公式获得总小时数 public void updateTotalHours int a SplitTime objMyCustomBaseAdapter getFistTime int b SplitTime objMyCusto

随机推荐