
关注 【网罗开发】微信公众号,回复【160】便可领取。
网罗天下方法,方便你我开发 ,更多Android技术干货等待领取,所有文档会持续灶塌更新,欢迎关注一起成长!
总结一下使用ACTION_BOOT_COMPLETED的广播,解决app开机自启动的问题
1.首先在你的工程上建一个广播接受铅悄的类,继承BroadcastReceiver:
2.然后要在AndroidManifest.xml中加入权限和配置相关信息:
3.在application标签中,配置以下相关信息:
补充说明:
1.查看系统中是否安装了类似360管家的软件,为了加快开机速度,默认是关闭掉开机广播的,只需要在设置中打开即可。
2.如果监听不到广播,可以尝试同时监听广播和sd卡。
3.同时监听广播和sd卡,在application标签中隐激圆,配置以下相关信息:
Android中可以使用 ActivityManager来获得正在运行或者已经启动的程序,示例如下:
// 查询所有正在运行的应用程序信息: 包括他们所在的进程id和进程名// 这儿我直接获取了系统里安装的所有应用程序,然后根据报名pkgname过滤获取所有真正运行的应用程序
private List<RunningAppInfo> queryAllRunningAppInfo() {
pm = this.getPackageManager()
// 查询所有已经安装的应用程序
List<ApplicationInfo> listAppcations = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES)
Collections.sort(listAppcations,new ApplicationInfo.DisplayNameComparator(pm))// 排序
// 保存所有正在运行的包名 以及它所在的进程信息
Map<String, ActivityManager.RunningAppProcessInfo> pgkProcessAppMap = new HashMap<String, ActivityManager.RunningAppProcessInfo>()
ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE)
// 通过调用ActivityManager的getRunningAppProcesses()方法获得系统里所有正在运行的进程
List<ActivityManager.RunningAppProcessInfo> appProcessList = mActivityManager
.getRunningAppProcesses()
for (ActivityManager.RunningAppProcessInfo appProcess : appProcessList) {
int pid = appProcess.pid // pid
String processName = appProcess.processName // 进程名
Log.i(TAG, "processName: " + processName + " pid: " + pid)
敬饥 String[] pkgNameList = appProcess.pkgList // 获得运行在该进程里的所有应用程序包
// 输出所有应用程序的包名
for (int i = 0 i < pkgNameList.length i++) {
String pkgName = pkgNameList[i]
Log.i(TAG, "packageName " + pkgName + " at index " + i+ " in process " + pid)
// 加入至map对象里
pgkProcessAppMap.put(pkgName, appProcess)
}
}
// 保存所有正在运行的应用程序信亮败返息
List<RunningAppInfo> runningAppInfos = new ArrayList<RunningAppInfo>() // 保存过滤查到的AppInfo
for (ApplicationInfo app : listAppcations) {
// 如果该包名存在 则构造枯宽一个RunningAppInfo对象
if (pgkProcessAppMap.containsKey(app.packageName)) {
// 获得该packageName的 pid 和 processName
int pid = pgkProcessAppMap.get(app.packageName).pid
String processName = pgkProcessAppMap.get(app.packageName).processName
runningAppInfos.add(getAppInfo(app, pid, processName))
}
}
return runningAppInfos
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)