Android 7.0 适配之更新安装 App

Android 6.0 的时候增加了 Android 运行时权限,在7.0的时候权限又增加了,可能这也是 Android 越来越安全的一个做法吧.

在做更新 App 的时候因为 7.0 系统的手机没有配置,导致强制更新下载下来的时候, App 没有自动安装,后来查资料才知道,原来是没有添加临时权限,所以今天在这记录一下.供后面参考

首先需要再清单文件里注册一个 provider 这个就是用来保存一个临时的 uri ,(可能我的理解是不对的,我是这么想的), 7.0 的这块主要就是 uri 和 7.0 之前不同,不能直接被使用,只能使用代理的形式来获得.

清单文件的内容:

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"/>

另外还需要写一个 xml 文件 xml/file_paths ,内容是这样的:











另外安装 apk 的方法是这样的:

/**

*安装软件

*/

private void installApk() {

if(Build.VERSION.SDK_INT>=24) {//判读版本是否在7.0以上

Filefile= newFile(fileStoreDir,fileName);

Stringauthorities=SchoolMateChatApplication.getInstance().getPackageName()+".fileprovider";

UriapkUri=FileProvider.getUriForFile(mContext,authorities,file);//在AndroidManifest中的android:authorities值

Intentinstall= newIntent(Intent.ACTION_VIEW);

install.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

install.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);//添加这一句表示对目标应用临时授权该Uri所代表的文件

install.setDataAndType(apkUri,"application/vnd.android.package-archive");

mContext.startActivity(install);

}else{

Filefile= newFile(fileStoreDir,fileName);

Uriuri=Uri.fromFile(file);

Intentinstall= newIntent(Intent.ACTION_VIEW);

install.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

install.setDataAndType(uri,"application/vnd.android.package-archive");

//执行意图进行安装

mContext.startActivity(install);

}
}

卸载的方法:

/**

*强制卸载某个包名(旧版本app)的程序

*/

private voiduninstallAPK() {

StringpackageName="以前版本包名";//以前版本包名

PackageManagerpageManage=mContext.getPackageManager();

Listpackages=pageManage.getInstalledPackages(0);

for(inti=0;i

PackageInfopackageInfo=packages.get(i);

StringpagName=packageInfo.packageName;

if(pagName.equals(packageName)) {//判断该应用是否存在

Uriuri=Uri.parse("package:"+packageName);

Intentintent= newIntent(Intent.ACTION_DELETE,uri);

mContext.startActivity(intent);

}
}
}

希望能对大家有所帮助,欢迎大家一起讨论交流.


3952735fe4a07d74f844ab84d36c43b0_r.jpg

你可能感兴趣的:(Android 7.0 适配之更新安装 App)