【如何管理开机自启动程序】

本文介绍了一种通过包管理器获取安卓设备上具有开机自启动权限的应用程序的方法,并提供了具体的Java代码实现。同时,文章还讨论了如何阻止应用程序自启动及在不同设备上的实现差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先写一个程序看看手机里面安装的app那些具有开机自启权限

有很多方法:这里是通过packagemnager 实现

public class checkthestartslef extends Activity {
    ListView listView;
    String boot_permission = "android.permission.RECEIVE_BOOT_COMPLETED";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listview_main);
        listView = (ListView) findViewById(R.id.list);
        // 添加适配器Adapter
        listView.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, getAppInfo()));
    }

    // 拿到开机启动app的信息
    private String[] getAppInfo() {
        int count = 0;// 记录有多少个app
        // 拿到已安装程序的信息
        List<ApplicationInfo> allAppList = getPackageManager()
                .getInstalledApplications(0);
        // 新建一个ArrayList数组
        List<String> autoBootAppList = new ArrayList<String>();
        // 遍历已安装的app如果app的权限里含有boot_permission且不为系统app
        for (ApplicationInfo appinfo : allAppList) {

            if (PackageManager.PERMISSION_GRANTED == getPackageManager()
                    .checkPermission(boot_permission, appinfo.packageName)) {
                if ((appinfo.flags & ApplicationInfo.FLAG_SYSTEM) <= 0) {
                    autoBootAppList.add(appinfo.packageName);
                }
            } else {
                autoBootAppList.add("第" + count + "个app");
                count++;
            }

        }
        return autoBootAppList.toArray(new String[autoBootAppList.size()]);
    }
}

开机启动广播

  • 1.extends broadcast
  • 2.注册/动静
  • 3.声明权限
  • 4.有序广播但是 不可中断

停止广播的方法

  • 1.设置app的Package stopped标志来实现

        通过forcestoppackage禁用,会停止定时器等。同时也需要system权限和系统签名
    
  • 2.设置recevier组件为不可用android:enable

            setApplicationEnabledSetting停用应用中所有的组件
            SetComponentEnabledSetting指定组件
  • 3.kill app进程

总结:

root权限:
1.使用pm命令来禁用包含Boot_Completed
2.监控后来进程“轮训”黑名单进而kill
增大了系统消耗。

小米:解析权限的时候回将所有的接受器的优先级减1。

如果没有root权限第三方app很难拿到对系统权限的控制。反而会降低安全性和消耗资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值