[quote=引用 12 楼 wei220000的回复:]private void startApp(String packageName) { Intent intent = new Intent(); PackageManager packageManager = mcontext.getPackageManager(); intent = packageManager.getLaunchIntentForPackage(packageName); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP) ; mcontext.startActivity(intent); } 启动已安装的Apk。
private void startApp(String packageName) { Intent intent = new Intent(); PackageManager packageManager = mcontext.getPackageManager(); intent = packageManager.getLaunchIntentForPackage(packageName); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP) ; mcontext.startActivity(intent); } 启动已安装的Apk。
自己设置一个标志位,如下载完成,然后做以下操作: /** * 安装一个应用程序 * @param context * @param apkfile */ public static void installApplication(Context context,File apkfile){ Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.setDataAndType(Uri.fromFile(apkfile), "application/vnd.android.package-archive"); context.startActivity(intent); } 如果要自动触发,可以考虑系统广播,比如开机广播、网络变化广播等。
你来控制下载吗?如果不是你自己控制,那你总得知道保存地址和文件名吧?你可以设置一个线程,无限循环的去查找这个apk,如果发现,就打开, Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setAction(Intent.ACTION_VIEW); String type = getMIMEType(file); intent.setDataAndType(/*uri*/Uri.fromFile(file), type); mcontext.startActivity(intent); 如果是想静默安装的话,要用到adb shell,需要root权限的。
String[] args = { "pm", "install", "-r", apkAbsolutePath }; String result = ""; ProcessBuilder processBuilder = new ProcessBuilder(args); Process process = null; InputStream errIs = null; InputStream inIs = null; try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); int read = -1; process = processBuilder.start(); errIs = process.getErrorStream(); while ((read = errIs.read()) != -1) { baos.write(read); } baos.write('/n'); inIs = process.getInputStream(); while ((read = inIs.read()) != -1) { baos.write(read); } byte[] data = baos.toByteArray(); result = new String(data); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (errIs != null) { errIs.close(); } if (inIs != null) { inIs.close(); } } catch (IOException e) { e.printStackTrace(); } if (process != null) { process.destroy(); } } return result; 代码执行后,如果安装成功的话获取到的result值是“ pkg: /data/local/tmp/Calculator.apk /nSuccess”,如果是失败的话,则没有结尾的“Success”。 不过这时候会提示你的程序想要获取权限,所以你最好在程序第一次运行的时候就尝试去获取权限,这样在安装的时候就不会再次提示了。具体怎么获取权限就百度吧,大概就是执行一次adb shell,就能申请了。
80,354
社区成员
91,288
社区内容
加载中
试试用AI创作助手写篇文章吧