Android 7.0 弹出框安装/sdcard/目录下的APK,提示解析包错误
各位大大:
小弟,有礼了。
如题,小弟在实现安装功能的时候,出现了问题。
安装函数:
调用上述函数时,如果传入的路径是“/sdcard/Android/data/com.my.localopare/xxx.apk”,可以正常弹出提示框。
但是,如果传入的路径是“/sdcard/myDownload/xxx.apk”,就会提示解析软件包时出现问题。
对此,小弟,很是疑惑。下面的代码就是配置的文件路径,
我的疑问:
是我的文件路径配置有误,还是Android7.0就只允许安装自己data目录下的apk文件呢?
AndroidManifest.xml
小弟,有礼了。
如题,小弟在实现安装功能的时候,出现了问题。
安装函数:
private static void installNormal(Context context, String apkPath) {
Intent intent = new Intent(Intent.ACTION_VIEW);
// 版本在7.0以上是不能直接通过uri访问的
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) {
File file = (new File(apkPath));
// 由于没有在Activity环境下启动Activity,设置下面的标签
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// 参数1 上下文, 参数2 Provider主机地址 和配置文件中保持一致 参数3 共享的文件
Uri apkUri = FileProvider.getUriForFile(context, "com.my.localopera.provider", file);
// 添加这一句表示对目标应用临时授权该Uri所代表的文件
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
} else {
intent.setDataAndType(Uri.fromFile(new File(apkPath)), "application/vnd.android.package-archive");
}
context.startActivity(intent);
}
调用上述函数时,如果传入的路径是“/sdcard/Android/data/com.my.localopare/xxx.apk”,可以正常弹出提示框。
但是,如果传入的路径是“/sdcard/myDownload/xxx.apk”,就会提示解析软件包时出现问题。
对此,小弟,很是疑惑。下面的代码就是配置的文件路径,
我的疑问:
是我的文件路径配置有误,还是Android7.0就只允许安装自己data目录下的apk文件呢?
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<paths>
<external-path path="Android/data/com.my.localopera/" name="files_root"/>
<external-path path="myDownload/" name="root"/>
</paths>
</resources>
AndroidManifest.xml
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.my.localopera.provider"
android:exported="false"
android:grantUriPermissions="true" >
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_path" />
</provider>
...全文
相关推荐
如何在电脑上安装安卓模拟器(附_APK安装法_,SD卡文件管理,安卓模拟器,apk安装器下载地址).doc
\sdcard.img`。
安卓4.0固件目录内容及其解析.pdf
《安卓4.0固件目录内容及其解析》在深入探讨安卓4.0固件的目录结构之前,首先需要理解Android系统的本质。
android 无sdcard 下载安装 apk 多线程 断点 自动安装apk
**权限管理**:在Android 6.0及以上版本,运行时权限管理需要在安装APK前获取写入外部存储的权限。如果设备没有SD卡,那么内部存储也需要权限。
Android实现用代码简单安装和卸载APK的方法
- 自Android 7.0开始,安装APK不再支持从外部存储直接安装,需要将APK拷贝到内部存储或者使用`FileProvider`来提供访问权限。
安卓模拟器,安装 用于安卓开发
**Path**:在系统Path变量中加入JDK的bin目录,如:`C:\Program Files\Java\jdk1.6.0_10\bin;`接下来,需要安装**Android Software Development


