我正在以编程方式安装Android应用程序。出现一个“完成操作使用”对话框。他们之间有许多选项“Package Installer”。如何在不要求用户选择的情况下隐式选择“包安装程序”?
修改 我正在使用的代码是:
Intent intent = new Intent();
intent .setDataAndType(Uri.fromFile(new File("/mnt/sdcard/download/App.apk")),"application/vnd.android.package-archive");
startActivity(intent);
答案 0 :(得分:5)
我正在使用此代码执行该任务。我想你错过了添加类型?
Uri fileUri = Uri.fromFile(myFile);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(fileUri, "application/vnd.android.package-archive");
startActivity(intent);
答案 1 :(得分:1)
当前不适用于第三方应用程序。这将对Android构成安全隐患。但是,第3方应用程序可以询问内置安装程序是否要安装软件包。这是用于以编程方式安装apk的代码。
Google Play中的应用
Intent installIntent = new Intent(Intent.ACTION_VIEW);
installintent.setData(Uri.parse("market://details?id=com.package.megaapp"));
startActivity(installIntent);
APK文件(无安装提示)
Intent installIntent = new Intent(Intent.ACTION_INSTALL_PACKAGE);
installIntent.setData(Uri.fromFile(new File("/sdcard/yourapk.apk"));
startActivity(installIntent);
但是您不能像Google Play那样安装apk,除非您的应用程序是系统且设备已植根。
答案 2 :(得分:1)
Android O及更高版本支持以编程方式安装应用程序。为此,您需要声明并请求REQUEST_INSTALL_PACKAGES
权限。
在您的清单上
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
在您的活动请求权限运行时中-直接用户允许权限
startActivity(new Intent(android.provider.Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, Uri.parse("package:".concat("your.package.name"))));
此后,您需要实现下载管理器和文件提供程序,并在下载后安装应用程序
关注this article,了解更多详情。
答案 3 :(得分:0)
如果您想在不选择安装程序对话框的情况下重定向到Android的软件包安装程序,请使用以下代码:
Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE);
intent.setDataAndType(Uri.fromFile(new File(path)), "application/vnd.android.package-archive");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
如果您要打开“选择安装程序对话框(如果您的设备中存在任何其他软件包安装程序应用程序)”,请使用以下代码:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(path)), "application/vnd.android.package-archive");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
注意Intent中的参数