【问题标题】:android: install application Programmatically using package installerandroid:使用包安装程序以编程方式安装应用程序
【发布时间】:2012-06-23 15:29:07
【问题描述】:

我正在以编程方式安装一个 android 应用程序。将出现一个对话框“使用完成操作”。它们之间有许多选项“包安装程序”。如何在不要求用户选择的情况下隐式选择“包安装程序”?

编辑 我使用的代码是:

 Intent intent = new Intent();
intent .setDataAndType(Uri.fromFile(new File("/mnt/sdcard/download/App.apk")),"application/vnd.android.package-archive");
startActivity(intent);

【问题讨论】:

  • 请显示您用于尝试安装应用程序的代码。另外,请显示您的选择器的屏幕截图,以显示您可以使用的“许多选项”。
  • 我将编辑我的问题。
  • 请将ACTION_VIEW 添加到您的Intent

标签: java android installation action package-managers


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如果您想在不选择安装程序对话框的情况下重定向到 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 中的参数

    【讨论】:

      【解决方案3】:

      这目前不适用于 3rd 方应用程序。这对安卓来说将是一个安全风险。但是,第 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,除非你的应用是系统的并且你的设备是 root 的。

      【讨论】:

        【解决方案4】:

        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了解更多详情。

        【讨论】:

          猜你喜欢
          • 2011-06-04
          • 1970-01-01
          • 1970-01-01
          • 2023-03-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多