android打开安装界面显示不全,Android打开安装界面遇到的问题

最近做一个软件商城,下载文件,在跳转到系统安装界面会遇到一些问题。

问题一:

Android7.0之后会报android.os.FileUriExposedException: file:///storage/emulated/0/xxxx/的问题,这是因为在Android7.0以上“私有目录被限制访问”,百度半天终于找到解决办法

1.在Android的配置清单中AndroidManifest.xml文件中进行下列配置:

android:name="android.support.v4.content.FileProvider"

android:authorities="包名.fileprovider"

android:exported="false"

android:grantUriPermissions="true">

android:name="android.support.FILE_PROVIDER_PATHS"

android:resource="@xml/file_paths" />

2.需要创建一个file_paths文件:

在res目录下创建文件夹xml,创建file_paths文件,如图所示:

28a3abb6acc2

创建file_paths文件.png

文件的内容:

name="softWareApp"

path="" />

注释:

代表的根目录: Context.getFilesDir()

代表的根目录: Environment.getExternalStorageDirectory()

代表的根目录: getCacheDir()

我的是在Environment.getExternalStorageDirectory()目录下创建的softWareApp文件夹,代码在上面

3.在跳转安装界面:

Intent intent = new Intent("android.intent.action.INSTALL_PACKAGE");

intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

Uri imgFile = FileUtil.getImgFile(activity, file);

intent.setAction(Intent.ACTION_VIEW);

intent.setDataAndType(imgFile, "application/vnd.android.package-archive");

startActivityForResult(intent, position);

FileUtil.getImgFile(activity, file);的代码为:

public static Uri getImgFile(Context context, File file) {

Uri data;

// 判断版本大于等于7.0

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {

// "net.csdn.blog.ruancoder.fileprovider"即是在清单文件中配置的authorities

data = FileProvider.getUriForFile(context, "com.mengzai.software.fileprovider", file);

// 给目标应用一个临时授权

} else {

data = Uri.fromFile(file);

}

return data;

}

2.运行代码,发现Android7.0能够跳转到系统的安装界面,还会报出安装包解析异常的错误,而你找到你手机的路径,找到apk文件,发现是能够安装的,而Android8.0手机更过分,安装界面闪了一下,又各种找资料,,,

最后发现只需要在AndroidManifest.xml文件中添加一个权限即可

至此,能够正常的进行安装。

思索了一下,发现android7.0打开相机的时候也发现了问题1,按照问题1的解决方法,完美的解决了问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值