gpt4 book ai didi

android - 尝试从本地文件安装 apk 时未发现 Activity 错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:01:06 27 4
gpt4 key购买 nike

我制作了一个应用程序,我从内部服务器下载了一个 APK,将其保存在本地并希望提示用户安装它。
我的代码如下:

protected void onPostExecute(String path) {
Intent promptInstall = new Intent(Intent.ACTION_VIEW);
promptInstall.setDataAndType(Uri.parse(path), "application/vnd.android.package-archive");
promptInstall.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(promptInstall);
}

该路径包含 APK 文件,因此下载没有问题,但在尝试启动 Activity 时我得到:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=/storage/sdcard/download/internalLocalApplication.apk typ=application/vnd.android.package-archive flg=0x10000000 }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1765)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1602)
at android.app.Activity.startActivityFromFragment(Activity.java:4340)
at android.app.Activity.startActivityFromFragment(Activity.java:4312)
at android.app.Fragment.startActivity(Fragment.java:1075)
at android.app.Fragment.startActivity(Fragment.java:1054)

我在这里做错了什么?

更新:
似乎如果我按如下方式更改代码,它就可以工作! Uri 似乎有问题?

@Override
protected void onPostExecute(String path) {
Uri fileLoc = Uri.fromFile(new File(path));
Intent promptInstall = new Intent(Intent.ACTION_VIEW);
promptInstall.setDataAndType(fileLoc, "application/vnd.android.package-archive");
promptInstall.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(promptInstall);
}

最佳答案

当您调用 Uri.parse(path) 时,path 参数需要包含如下内容:

file:///storage/sdcard/download/internalLocalApplication.apk

目前您的 path 参数不包含方案(即:file:// 部分),这就是它无法被正确解析的原因。

当 Android 然后寻找可以查看此 URI 的 Activity 时,它找不到匹配的,因为 URI 没有“方案”。

关于android - 尝试从本地文件安装 apk 时未发现 Activity 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29651774/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com