首页 > 编程知识 正文

适配安卓10的框架,突然遇到一个人跟你完美适配

时间:2023-05-06 00:17:37 阅读:130003 作者:1972

对于完全符合Android8.0未知源APP安装权限方案的用户,您的请求将提供源代码。 我自己写了demo。 可以在虚拟机上运行。 请检查源代码:

源代码传输2018年5月更正:

@this蜗牛需要设置包名称才能打开权限设置界面,以便onActivityResult接收【resultCode等于RESULT_OK】

所以修正方法:

@ requires API (API=build.version _ codes.o ) privatevoidstartinstallpermissionsettingactivity ) /注意这是8.0新应用程序服务器}如下所示。

@ requires API (API=build.version _ codes.o ) privatevoidstartinstallpermissionsettingactivity ) uripackageuri=urri //startactivityforresult(intent,10086; (@this感谢蜗牛的意见

在Android8.0的众多新功能中,有一个非常重要的功能。 未知源的应用权限

以前,在安装未知源的APP时,通常会弹出一个弹出窗口,让用户可以设置允许还是拒绝,然后在设置允许后,所有未知源的APP都可以安装。

Android8.0的变化需要取消未知APP安装权限的开关,相反,创建未知源APP的管理列表,诚实的洋葱打开每个APP的未知源安装权限。 谷歌之所以这样做,是为了防止最初体面的APP随后通过升级而做出不合法的事情,从而侵犯用户的权利。

crdny的APP直接符合Android8后,内部启动APP安装将被阻止。 如果不处理此未知源的权限,APP将无法更新,只能到APP市场重新下载。

那么,如何适应8.0这个新的变化呢?

1、在清单文件中添加请求安装权限

uses-permission Android : name=' Android.permission.request _ install _ packages '/2,必须在代码中处理权限

首先,使用canRequestPackageInstalls ()方法确定APP应用程序是否具有此权限

haveinstallpermission=getpackagemanager ().canRequestPackageInstalls ); 如果haveInstallPermission为true,则您的APP应用程序有权安装未知的源APP应用程序。 你直接执行安装APP应用程序的操作就可以了。

如果haveInstallPermission为false,则除非您的APP应用程序具有安装未知源APP应用程序的权限,否则无法安装APP应用程序。 此权限不是运行时权限,因此不能在代码中请求权限。 或者,用户必须跳转到设置屏幕并自己打开权限。

具体操作是弹出诊断程序以通知用户

“必须打开未知的源权限才能安装APP应用程序。 请在设定中打开权限”

然后,使用者按一下确定,跳至未知的来源APP应用程式权限管理清单。

intent intent=new intent (settings.action _ manage _ unknown _ app _ sources ); startactivityforresult(intent,10086; 然后去onActivityResult领取结果:

if (result code==result _ okrequestcode==10086 (安装过程); 再次运行安装过程(包括//权限确定)的完整过程包括://安装APP应用程序的private void installProcess () { boolean haveInstallPermission; if (build.version.SDK _ int=build.version _ codes.o ) /获取您是否有权安装未知的源APP应用程序。 haveinstallpermission=getpackagemanager () )。 if (! haveinstallpermission(//无权限dialogutils.showdialog ) this,'必须打开未知的源权限才能安装APP应用程序。 请在设置中打开权限',new view.onclick listener ((overridepublicvoidonclick ) viewv ) if ) build.version.SDK _ int=build }、null; 返回; }//具有权限并开始安装APP install apk (apk ) } @ requires API (API=build.version _ codes.o ) privatevoidstartinstalllpes 注意这是8.0新apiintentintent=new intent (settings.action _ manage _ unknown _ app _ sources,packageURI ); startactivityforresult(intent,10086; //privatevoidinstallapk (文件PK ) intentintent=newintent )安装intent.action_view。 if (build.version.SDK _ int build.version _ codes.n (intent.setdataandtype (uri.from file (apk ),' appplicanicand ) }要在} else {//Android7.0之后获取uri,请使用contentprovideruriuri=appcommonutils.geturifromfile (getbasecontext ),apk ); intent.setdataandtype(uri,' application/vnd.Android.package-archive '; intent.add flags (intent.flag _ grant _ read _ uri _ permission ); } intent.add flags (intent.flag _ activity _ new _ task ); getBaseContext () .开始活动(intent ); 至此,Android8.0未知源APP的安装权限已基本完成。 希望对大家有帮助。 请注明出处

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。