最流行的网站开发,wordpress负载100%,长沙公司名称大全,怎么做原创动漫视频网站近期开发上线一个常驻app#xff0c;项目已上线#xff0c;今天随笔记录一下静默安装相关内容。我分三篇静默安装#xff08;root版#xff09;、静默安装#xff08;无障碍版#xff09;、监听系统更新、卸载、安装。先说说我的项目需求#xff1a;要求app一直运行项目已上线今天随笔记录一下静默安装相关内容。我分三篇静默安装root版、静默安装无障碍版、监听系统更新、卸载、安装。先说说我的项目需求要求app一直运行通过指令进行自动安装并在安装成功后自动开启。行业人事都了解非root权限不可能无声无息的完成此要求。我分两步完成了此功能开发。今天记录一下root权限下实现静默安装app。本文使用RunTime执行pm install安装指定文件。一、获取权限javapublic class SilentInstall {/*** root权限下静默安装apk* param apkPath 目标文件* return true 安装成功 false 安装失败*/public boolean install(String apkPath) {boolean result false;DataOutputStream dataOutputStream null;BufferedReader errorStream null;try{// 申请su权限Process process Runtime.getRuntime().exec(su);dataOutputStream new DataOutputStream(process.getOutputStream());// 执行pm install命令String command pm install -r apkPath \n;dataOutputStream.write(command.getBytes(Charset.forName(utf-8)));dataOutputStream.flush();dataOutputStream.writeBytes(exit\n);dataOutputStream.flush();process.waitFor();errorStream new BufferedReader(new InputStreamReader(process.getErrorStream()));String msg ;String line;// 读取命令的执行结果while((line errorStream.readLine()) !null) {msg line;}// 如果执行结果中包含Failure字样就认为是安装失败否则就认为安装成功if(!msg.contains(Failure)) {result true;}}catch(Exception e) {Log.e(install,e.getMessage(),e);}finally{try{if(dataOutputStream !null) {dataOutputStream.close();}if(errorStream !null) {errorStream.close();}}catch(IOException e) {Log.e(install,e.getMessage(),e);}}return result;}}调用 if (!new SilentInstall().install(absolutePath)) {// 调用系统安装方法Intent install new Intent(Intent.ACTION_VIEW);Uri uri Uri.fromFile(new File(apkPath));install.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);install.setDataAndType(uri,application/vnd.android.package-archive);context.startActivity(install);}有root权限时使用静默安装。没有权限时使用系统安装方法。 但是使用系统安装方法明显时不符合项目需要的。所以我使用无障碍服务辅助系统安装方法完成无操作安装。
下篇使用无障碍服务进行无操作安装应用。欢迎各位同学指导……