2017-06-03 46 views
-1

因此,为了测试目的,我有一个更新函数,它检查我手机上的版本与我已上传到某个地方的版本。每一个工作正常,但当它去安装它只是崩溃,并给我这个错误。从android包内部存储获取文件

java.lang.IllegalArgumentException异常:无法找到配置的根包含/data/data/com.example.XXXX.demoapp/update/demo.apk

这里是它崩溃了:

private static final String APK_SAVE_PATH = "/data/data/com.example.XXXX.demoapp/update"; 

final File apk = new File(APK_SAVE_PATH,"demo.apk"); 


if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 
            Uri apkUri = FileProvider.getUriForFile(context, context.getPackageName() + ".provider", apk); 
            Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE); 
            intent.setData(apkUri); 
            intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
            context.startActivity(intent); 
           } else { 
            Uri apkUri = Uri.fromFile(apk); 
            Intent intent = new Intent(Intent.ACTION_VIEW); 
            intent.setDataAndType(apkUri, "application/vnd.android.package-archive"); 
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
            context.startActivity(intent); 
           } 



<?xml version="1.0" encoding="utf-8"?> 
<paths xmlns:android="http://schemas.android.com/apk/res/android"> 
    <external-path name="apk" path="/data/data/com.example.XXXX.demoapp/update/" /> 
</paths> 
+1

以供将来参考,你应该张贴代码为[MCVE。这意味着你发布的代码应该编译;它应该有一个类和方法,就像任何Java代码一样。另外,它应该是最小的;它应该只包含足够的代码来重现错误。例如,没有理由检查SDK版本的if语句。只显示您询问的特定版本的代码。 –

+0

@ Code-Apprentice我会记住这一点,谢谢! – Nick

回答

0
<paths xmlns:android="http://schemas.android.com/apk/res/android"> 
    <external-path name="external_files" path="."/> 
    <files-path 
     name="apk" 
     path="/" /> 
</paths> 

显然是做的伎俩

相关问题