Java Android如何安装存储在内部存储器中的apk

Java Android如何安装存储在内部存储器中的apk,java,android,apk,uri,android-internal-storage,Java,Android,Apk,Uri,Android Internal Storage,我已成功地将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(apkFi

我已成功地将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);
    }
}
//旧版本

如果(Build.VERSION.SDK_INT无法使用内容方案安装apk

您必须为Android提供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);
    }
}
所以不要使用文件提供者


此外,您应该下载到getExternalStorageDirectory()或GetFileDir()。

不能使用内容方案安装apk

您必须为Android提供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);
    }
}
所以不要使用文件提供者


此外,还应下载到getExternalStorageDirectory()或GetFileDir()中相反。

我的文件路径实际上是/data/com.me.appName/files/update.apk
。这是一个不可能的路径。只有在根设备上才能创建它。
成功地将我的apk文件下载到内部存储。
那么你是如何做到的呢?考虑到不可能的路径。你说的是
this.pathTo文件
Android如何安装存储在内部存储器中的apk
。错误的subject.context.openFileOutput(“app.apk”,context.MODE\u PRIVATE);是保存它的地方。然后我存储了pathToFile=context.getFilesDir().toString()+“/app.apk”
我的文件路径实际上是/data/com.me.appName/files/update.apk
。这是一个不可能的路径。只有在根设备上才能创建它。
成功地将我的apk文件下载到了内部存储。
。那么你是如何做到的呢?考虑到不可能的路径。你说的是
这个.pathToFile
Android如何安装存储在内部存储器中的apk
。错误的主题。上下文。openFileOutput(“app.apk”,context.MODE_PRIVATE);是它保存的地方。然后我存储了pathToFile=context.getFilesDir().toString()+“/app.apk”;我确实下载到getFilesDir().File apkFile=新文件(context.getFilesDir().getAbsolutePath()+“/app.apk”);是的,我知道。所以我说过不要这样做。有什么理由选择外部存储而不是getFilesDir()吗?我选择GetFileDir的原因是因为每个设备都有它,而不是每个设备都有外部存储介质。每个设备都有外部存储。如果可以插入micro SD卡,很多设备也有可移动存储。不要使用GetFileDir()因为它只是你应用程序的私有内部存储。所以其他应用程序没有访问权限。我担心你的apk无法从内部存储安装。如果Android安装了apk,那么它应该有访问权限。但请两者都尝试。为什么不呢?apk不是尝试安装它的应用程序?或者是吗?我确实下载到GetFileDir().File apkFile=new File(context.getFilesDir().getAbsolutePath()+“/app.apk”);是的,我知道。所以我说过不要这样做。有什么理由选择外部存储而不是getFilesDir()吗?我选择GetFileDir的原因是因为每个设备都有它,而不是每个设备都有外部存储介质。每个设备都有外部存储。如果可以插入micro SD卡,很多设备也有可移动存储。不要使用GetFileDir()因为它只是你的应用程序的私有内部存储。所以其他应用程序没有访问权限。我担心你的apk无法从内部存储安装。如果Android安装了apk,那么它应该有访问权限。但请两者都尝试。为什么不呢?apk不是尝试安装它的应用程序?或者是吗?