`

Android开机自启动程序设置及控制方法思路浅谈

阅读更多

Android系统通过应用程序自行在系统中登记注册事件(即Intent)来响应系统产生的各类消息。

例如Android实现系统开机自启动程需要在Manifest中加入如下Intent-filter及权限Uses-permission即可。
  1.     <intent-filter>  
  2.         <action android:name="android.intent.action.BOOT_COMPLETED"/>  
  3. (修改时候主要是去掉上面该行即可)
  4.         <category android:name="android.intent.category.HOME" />  
  5.     </intent-filter>  
  6. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>   
  7. (修改时候主要是去掉上面该行即可)
  8. Android系统为应用程序管理功能提供了大量的API,可以通过API控制Intent和permission,其中

上述配置表示应用程序会响应系统产生的android.intent.action.BOOT_COMPLETED(系统启动完成)信号,以此来实现应用程序自启动。当然知道上述原理后,我们就可以随心所欲的控制程序开机自启动了。具体思路如下:

 

一、手工方法

基于上述原理,我们可以通过对系统中已安装的程序去除其Manifest的上述配置片段来控制应用程序的对系统的响应,当然没源码可修改编译的情况下只能实现屏蔽其对有些信号的响应,例如屏蔽该程序不再开机自启动。手工方法就是利用有关工具直接在解压其APK包后,修改其Manifest的上述配置行后再打包成APK,最后安装到系统中就实现了屏蔽其自启动功能。具体相关的工具软件主要有APKTOOL。(请自己放狗去搜索下载)

 

二、编程实现

 

当然手工方法需要借助APKTOOL等工具,步骤比较法繁琐,我们可以通过自己开发来实现该功能。幸好

1、PackageManager

本类API是对所有基于加载信息的数据结构的封装,包括以下功能:

•安装,卸载应用
•查询permission相关信息
•查询Application相关信息(application,activity,receiver,service,provider及相应属性等)
•查询已安装应用
•增加,删除permission
•清除用户数据、缓存,代码段等
非查询相关的API需要特定的权限,具体的API请参考SDK文档。

2、ActivityManager相关

本类API是对运行时管理功能和运行时数据结构的封装,包括以下功能

•激活/去激活activity
•注册/取消注册动态接受intent
•发送/取消发送intent
•activity生命周期管理(暂停,恢复,停止,销毁等)
•activity task管理(前台->后台,后台->前台,最近task查询,运行时task查询)
•激活/去激活service
•激活/去激活provider等
task管理相关API需要特定的权限,具体API可参考SDK文档。

 

利用上述API原理的具体代码俺有空时候试试实现一个,应该不难的,都是调用现成的API实现。目前发现已有的控制开机自启动的成熟应用程序主要是autostarts,可自己安装一个试试,挺好用,实际上autostart有点名不副实,如果是我就会起个名字叫Intentcontrol,因为其不只是控制开机启动信号,它可以控制程序对大部分信号的响应行为。

 

三、系统自带工具

Android自带了1、程序包管理工具:/system/bin/pm  2、activity管理工具:/system/bin/am

具体用法大致说明如下:

pm的使用方法可以参考 

usage: pm [list|path|install|uninstall]
       pm list packages [-f]
       pm list permission-groups
       pm list permissions [-g] [-f] [-d] [-u] [GROUP]
       pm list instrumentation [-f] [TARGET-PACKAGE]
       pm list features
       pm path PACKAGE
       pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] PATH
       pm uninstall [-k] PACKAGE
       pm enable PACKAGE_OR_COMPONENT
       pm disable PACKAGE_OR_COMPONENT

The list packages command prints all packages.  Options:
  -f: see their associated file.

The list permission-groups command prints all known
permission groups.

The list permissions command prints all known
permissions, optionally only those in GROUP.  Options:
  -g: organize by group.
  -f: print all information.
  -s: short summary.
  -d: only list dangerous permissions.
  -u: list only the permissions users will see.

The list instrumentation command prints all instrumentations,
or only those that target a specified package.  Options:
  -f: see their associated file.

The list features command prints all features of the system.

The path command prints the path to the .apk of a package.

The install command installs a package to the system.  Options:
  -l: install the package with FORWARD_LOCK.
  -r: reinstall an exisiting app, keeping its data.
  -t: allow test .apks to be installed.
  -i: specify the installer package name.

The uninstall command removes a package from the system. Options:
  -k: keep the data and cache directories around.
after the package removal.

The enable and disable commands change the enabled state of
a given package or component (written as "package/class").

 

am的使用方法可以参考 

usage: am [subcommand] [options]

    start an Activity: am start [-D] <INTENT>
        -D: enable debugging

    send a broadcast Intent: am broadcast <INTENT>

    start an Instrumentation: am instrument [flags] <COMPONENT>
        -r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT)
        -e <NAME> <VALUE>: set argument <NAME> to <VALUE>
        -p <FILE>: write profiling data to <FILE>
        -w: wait for instrumentation to finish before returning

    start profiling: am profile <PROCESS> start <FILE>
    stop profiling: am profile <PROCESS> stop

    <INTENT> specifications include these flags:
        [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
        [-c <CATEGORY> [-c <CATEGORY>] ...]
        [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]
        [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]
        [-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]
        [-n <COMPONENT>] [-f <FLAGS>] [<URI>]

 

 

 

分享到:
评论

相关推荐

    Android 开机自启动应用

    在Android系统中,开机自启动应用是指当设备完成启动过程后,系统会自动运行的一类应用程序。这些应用通常会在用户无须手动干预的情况下执行特定任务,例如同步数据、推送通知或者进行后台服务的初始化。"BOOT_...

    【Android】开机自启动2

    在Android系统中,"开机自启动"是指当设备完成启动过程后,某些应用程序或服务能够自动启动并开始运行。这通常涉及到系统级别的设置和权限管理,对于开发者来说,理解和掌握这个功能是创建后台服务和持续运行应用的...

    【Android】开机自启动

    在Android系统中,"开机自启动"是指当设备完成启动过程后,某些应用程序或服务能够自动启动,无需用户手动操作。这通常涉及到Android系统的广播接收器(BroadcastReceiver)和权限设置。下面将详细讲解Android开机自...

    delphi ex10 android 实现开机自启动

    标题中的"Delphi EX10 Android 实现开机自启动"是指使用Embarcadero Delphi XE10(也称为 RAD Studio XE10)开发的Android应用程序,目的是使其能够在设备启动时自动运行。这个过程涉及到Android系统的权限管理和...

    【Android】开机自启动Service

    本文将深入探讨如何在Android中实现开机自启动Service。 首先,我们要明白Android系统的权限管理机制。由于安全原因,从Android 8.0(API级别26)开始,系统对应用的自启动行为进行了限制,不允许应用在没有用户...

    Android开机自启动

    在Android系统中,"开机自启动"是指应用程序在设备启动完成后自动运行的功能。这通常涉及到系统服务、广播接收器和启动器服务等组件。在Android的权限管理日益严格的今天,了解如何实现和管理开机自启动对于开发者和...

    Android 开机自启动示例程序

    总结来说,创建一个Android开机自启动示例程序涉及到创建BroadcastReceiver、注册接收器、使用SharedPreferences存储用户设置以及处理权限问题。通过理解这些核心概念和技术,开发者可以构建出能够根据用户需求开机...

    Android8.1-如何开机自启动WiFi-Adb连接.pdf

    "Android 8.1 开机自启动 WiFi-Adb 连接" Android 8.1 是 Google 公司推出的一个 Android 操作系统版本。该版本中,Android 8.1 引入了许多新的功能和改进,包括开机自启动 WiFi-Adb 连接服务。本文将详细介绍如何...

    android实现开机自启动以及后台运行

    在Android平台上,实现应用的开机自启动和后台运行是一项常见的需求,这通常涉及到服务(Service)、广播接收器(BroadcastReceiver)以及系统权限的管理。在本文中,我们将深入探讨如何在Android 2.1及以上版本中...

    android开机自动启动service例子

    当设备开机时,我们可能需要某些服务自动启动,以便在用户解锁设备之前执行一些必要的任务,例如同步数据、设置闹钟或者进行网络检查等。本篇文章将详细解释如何在Android中创建一个开机自动启动的服务。 首先,...

    android 开机自启动+后台服务+自动关机

    在Android系统中,实现“开机自启动+后台服务+自动关机”功能涉及到多个关键知识点。下面将逐一详细解释这些概念及其实现方法。 1. **开机自启动**:Android设备开机后,允许开发者通过注册BroadcastReceiver来监听...

    android程序开机自启动示例

    本示例将深入讲解如何实现一个Android程序开机自启动的功能。 首先,我们需要了解Android系统的生命周期。在设备启动时,系统会依次启动各种核心服务,然后广播ACTION_BOOT_COMPLETED意图。这个广播表示系统已经...

    android应用程序开机启动

    Android应用程序可以实现开机时启动相关应用 如service等 Android系统在开机启动时会发出一个系统广播&quot;android intent action BOOT COMPLETED&quot; 在接收到这个广播就可以实现开机自启动功能 下面就是一个...

    android最好的开机自启动项管理软件

    android最好的开机自启动项管理软件,软件暂用资源小,功能强大,绿色无广告~~极力推荐

    Delphi下 Android 开机启动代码

    在Delphi环境下开发Android应用程序时,有时我们需要实现一个功能,即让应用在Android设备开机时自动启动。这个功能通常用于后台服务、定时任务或者需要在系统启动时立即运行的特定功能。以下是对如何在Delphi中创建...

    android开机自启动APP及使用adb命令测试方法

    Android开机自启动APP及使用adb命令测试方法 Android开机自启动APP是指Android系统在启动完成后自动运行某个应用程序,这种方式常用于某些需要在系统启动后自动运行的应用程序。今天,我们来分享Android开机自启动...

    android开机启动程序源码

    在Android系统中,开机启动程序源码涉及到一系列复杂的流程和技术,包括系统初始化、服务启动、广播接收器等。本文将深入解析Android系统如何在开机时启动应用程序,并介绍相关的知识点。 一、系统启动流程 1. **...

    实现开机自启动服务

    在Android系统中,实现开机自启动服务是一项常见的需求,它使得应用能够在用户开机后自动运行特定的任务,如数据同步、消息推送等。本篇将详细讲解如何创建并配置开机自启动服务。 首先,我们需要理解`android....

Global site tag (gtag.js) - Google Analytics