1***@qq.com
1***@qq.com
  • 发布:2022-09-03 16:28
  • 更新:2022-09-03 16:31
  • 阅读:447

HBuilderX3.6.0起,支持直接在应用项目中配置应用清单文件 AndroidManifest.xml 和资源目录 assets、res。是不是可以设置开机自启了?大神们谁试一下贴出方案

分类:HBuilderX

Android原生应用清单文件和资源https://uniapp.dcloud.net.cn/tutorial/app-nativeresource-android.html
方法1(启动页)
在AndroidMainfest中,将首页的Activity设置一下属性即可

<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<category android:name="android.intent.category.HOME" />
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
方法2(监听开机广播)
使用静态广播实现自启功能

1.广播及权限声明
AndroidManifest文件中声明权限:

<!-- 开机监听-->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!-- 悬浮窗-->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
声明广播:

<receiver
android:name=".AutoStartReceiver"
android:enabled="true"
android:exported="true">
<intent-filter android:priority="1000">
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
2.广播类实现
AutoStartReceiver类代码实现:

public class AutoStartReceiver extends BroadcastReceiver {

@Override  
public void onReceive(Context context, Intent intent) {  
    //开机启动  
    if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {  
        Intent thisIntent = new Intent(context, MainActivity.class);//设置要启动的app  
        thisIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
        context.startActivity(thisIntent);  
    }  
}  

}
3.悬浮窗权限申请
在主Activity里申请悬浮窗权限

//检查是否已经授予权限,大于6.0的系统适用,小于6.0系统默认打开,无需理会
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(this)) {
//没有权限,须要申请权限,由于是打开一个受权页面,因此拿不到返回状态的,因此建议是在onResume方法中重新执行一次校验
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivity(intent);
}
测试补充
测试时候需要注意,使用这种方法,都是需要启动一次APP,之后自启才会实现

手中有台Android11的设备,测试发现不加悬浮窗,也是无法在开机后启动APP

而华为平板里的系统是Android10,所以断定Android 10以上估计都要申请悬浮窗权限才能实现

同事的手机是鸿蒙系统,加了悬浮窗还是无法自启

注意:
华为手机或平板都需要去设置应用的启动管理,其他系统可参考此设置

2022-09-03 16:28 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com (作者)

参考地址:https://www.cnblogs.com/stars-one/p/16329968.html

该问题目前已经被锁定, 无法添加新回复