【问题标题】:Android how to install apk stored in internal storageAndroid如何安装存储在内部存储中的apk
【发布时间】:2017-11-17 06:07:09
【问题描述】:

我已成功将我的 apk 文件下载到内部存储。

但是在运行它时,我收到“未找到处理意图的活动”错误。

这是我运行 apk 文件的代码。

// Old version
if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.N)
{
File apkFile = new File(this.pathToFile);
     if(apkFile.exists())
     {
          Uri apkURI = Uri.fromFile(apkFile);
          Intent intent = new Intent(Intent.ACTION_VIEW);
          intent.setData(apkURI);
          intent.setType("application/vnd.android.package-archive");
          intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, false);
          intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
          context.startActivity(intent);
    }
}

【问题讨论】:

  • my file path is actually /data/com.me.appName/files/update.apk。那是一条不可能的路。只有在有根设备上才能创建它。
  • successfully downloaded my apk file to internal storage.。那么你是怎么做到的呢?考虑到那条不可能的路。
  • 你说的是this.pathToFile
  • Android how to install apk stored in internal storage。主题错误。
  • context.openFileOutput("app.apk", Context.MODE_PRIVATE);是它被保存的地方。然后我存储了 pathToFile = context.getFilesDir().toString() + "/app.apk";

标签: java android apk uri android-internal-storage


【解决方案1】:

无法使用内容方案安装 apk。

您必须为 Android 提供 apk 文件的文件路径。

所以不要使用 FileProvider。

您还应该下载到 getExternalStorageDirectory() 或 getFilesDir()。

【讨论】:

  • 我确实下载到 getFilesDir()。文件 apkFile = new File(context.getFilesDir().getAbsolutePath() + "/app.apk");
  • 是的,我知道。所以不要那样做就是我说的。
  • 是否有任何理由选择 ExternalStorage 而不是 getFilesDir()?我选择 getFilesDir 的原因是因为每个设备都有它,而不是每个设备都有外部存储介质。
  • 每个设备都有外部存储。如果可以插入 micro SD 卡,许多设备也具有可移动存储。不要使用 getFilesDir(),因为它是您应用程序的私有内部存储。所以其他应用程序没有访问权限。恐怕您的 apk 无法从内部存储安装。好吧,如果Android安装了apk,那么它应该可以访问。但请尝试两者。为什么不呢?
  • 该apk不是试图安装它的应用程序吗?还是这样?
猜你喜欢
  • 1970-01-01
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
  • 2013-05-02
相关资源
最近更新 更多