android:使用包安装程序以编程方式安装应用程序

问题描述 投票:1回答:3

我正在以编程方式安装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);
android install action package-managers
3个回答
5
投票

我正在使用此代码执行该任务。我想你错过了添加类型?

Uri fileUri = Uri.fromFile(myFile);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(fileUri, "application/vnd.android.package-archive");
startActivity(intent);

1
投票

目前,第三方应用程序无法使用此功能。这将是android的安全风险。但是,如果要安装软件包,第三方应用程序可以询问内置安装程序。以下是以编程方式安装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那样安装apks,除非你的应用程序是系统而你的设备是root用户。


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中的参数

© www.soinside.com 2019 - 2024. All rights reserved.