【问题标题】:Programatically install apk from assets folder in android以编程方式从android中的资产文件夹安装apk
【发布时间】:2012-10-01 12:19:18
【问题描述】:

我正在尝试以编程方式从 assets 文件夹安装 apk,但没有成功,请帮助我。我为此使用以下代码。谢谢。

Intent intent = new Intent(Intent.ACTION_VIEW)
.setData(Uri.parse("file:///android_asset/youtuberanjit.apk"))
.setType("application/vnd.android.package-archive");
startActivity(intent);

【问题讨论】:

  • Akash 首先将 apk 文件从 assets 复制到 sdcard ,然后从 sdcard 安装 apk。我认为这是唯一的方法。
  • @Chirag Raval:SDCARD 在我的设备中不可用,我想直接从资产文件夹安装 apk 到设备。不使用 sdcard...
  • 资产目录只是一个非结构化的文件层次结构,允许您将任何您想要的内容放在那里,然后作为原始字节流检索。
  • 好的,但是,不使用 sdcard 是否可以安装 apk。我可以使用其他东西或技术替换 sdcard。
  • 您可以将其复制到应用程序内存中。

标签: android android-intent android-install-apk


【解决方案1】:
AssetManager assetManager = getAssets();

InputStream in = null;
OutputStream out = null;

try {
    in = assetManager.open("myapk.apk");
    out = new FileOutputStream("/sdcard/myapk.apk");

    byte[] buffer = new byte[1024];

    int read;
    while((read = in.read(buffer)) != -1) {

        out.write(buffer, 0, read);

    }

    in.close();
    in = null;

    out.flush();
    out.close();
    out = null;

    Intent intent = new Intent(Intent.ACTION_VIEW);

    intent.setDataAndType(Uri.fromFile(new File("/sdcard/myapk.apk")),
        "application/vnd.android.package-archive");

    startActivity(intent);

} catch(Exception e) { }

【讨论】:

  • 但是我们需要直接从assets文件夹安装apk。这可能吗?请帮帮我...
  • 是的,这段代码就是为了这个目的从 assets 文件夹中安装的!
  • 这个是正确的intent.setDataAndType(Uri.fromFile(new File("file:///android_asset/myapk.apk")), "application/vnd.android.package-archive") ;
  • @RanjitChandel 嗨,我也遇到同样的解析错误..我将 apk 保存在 data/data/my_application_pkg/myapk.apk 中,然后安装但出现解析错误..你能帮我解决这个问题...
  • @RanjitChande 您好,我收到解析错误。将 apk 保存在应用程序目录中(/data/data//files/。我的设备操作系统是 Marshmallow。
【解决方案2】:

将 apk 文件复制到 assets 文件夹中。

试试这个对我有用的方法..........

private void launchComponent(String packageName, String name) { 

  // Name should be starting activity complete name with package name
        Intent launch_intent = new Intent("android.intent.action.MAIN");
        launch_intent.addCategory("android.intent.category.LAUNCHER");
        launch_intent.setComponent(new ComponentName(packageName, name));
        launch_intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        this.startActivity(launch_intent);
    }

【讨论】:

    猜你喜欢
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多