前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android7.0 &9.0在进行APP内部自动更新时遇到的问题记录

Android7.0 &9.0在进行APP内部自动更新时遇到的问题记录

作者头像
胖虎哥
发布2023-05-10 19:18:25
5110
发布2023-05-10 19:18:25
举报

首先,第一个问题:

在Android 7.0 之后, 打开文件时报错:

其次,第二个问题, 在android 9.0 上,打开intent时会闪一下, 但是打不开, 仅需要添加权限即可

代码语言:javascript
复制
	 <!--适应android 9.0 调用安装app-->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

最后, android在9.0遇到的解析包错误,请看代码:

代码语言:javascript
复制
 未修改之前代码:
 	
  public static void installUPTSMServiceApk(final Activity activity) {

                File downNewAppFile = new File(Environment.getExternalStorageDirectory().getPath() + "/GDDownload", "UPTSMSeraviceApk.apk");
       			 Intent intent = new Intent(Intent.ACTION_VIEW);

                if (Build.VERSION.SDK_INT >= 24) {
                    intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                    Uri contentUri = FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID + ".fileProvider", downNewAppFile);
                    intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
                } else {
                    intent.setDataAndType(Uri.fromFile(downNewAppFile), "application/vnd.android.package-archive");

                }
        		intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                activity.startActivity(intent);
            }
代码语言:javascript
复制
修改之后代码:
	
    public static void installUPTSMServiceApk(final Activity activity) {
        // 启用安装新线程
                File downNewAppFile = new File(Environment.getExternalStorageDirectory().getPath() + "/GDDownload", "UPTSMSeraviceApk.apk");
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                if (Build.VERSION.SDK_INT >= 24) {
                    intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                    Uri contentUri = FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID + ".fileProvider", downNewAppFile);
                    intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
                } else {
                    intent.setDataAndType(Uri.fromFile(downNewAppFile), "application/vnd.android.package-archive");

                }
                
                activity.startActivity(intent);
            }

如果大家仔细看代码就会看出些许端倪, 如果没时间看也没关系,其实最主要的就是把

代码语言:javascript
复制
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

放在了,

代码语言:javascript
复制
   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

的前面, 具体原因不再详述,有兴趣的同学可以自行查阅。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档