Android(安卓)8.0 app内覆盖安装
16lz
2022-05-28
<!-- 8.0以上系统自动安装更新app会闪退,需要申请权限 --><uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
private void onCallPermission() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // 判断是否可以安装未知来源的应用 boolean couldAutoInstall = getPackageManager().canRequestPackageInstalls(); if (couldAutoInstall) { doAppInstall(); } else { if (ContextCompat.checkSelfPermission(this, Manifest.permission.INSTALL_PACKAGES) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{ Manifest.permission.INSTALL_PACKAGES}, REQUEST_CODE_INSTALL_PACKAGE); } else { doAppInstall(); } }} else { doAppInstall();}}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == REQUEST_CODE_INSTALL_PACKAGE && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { doAppInstall(); } else { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // 跳转设置允许开启未知来源应用安装 Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES); List<ResolveInfo> resolveInfoList = getPackageManager().queryIntentActivities(intent, 0); if (resolveInfoList == null || resolveInfoList.isEmpty()) { return; } startActivityForResult(intent, REQUEST_CODE_OPEN_INSTALL_UNKNOWN);showOpenUnknownInstallDialog(); } }}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE_OPEN_INSTALL_UNKNOWN && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { boolean couldAutoInstall = getPackageManager().canRequestPackageInstalls(); if (couldAutoInstall) { onCallPermission(); } }}
更多相关文章
- android 如何调用系统自带的程序安装器安装程序
- Android(安卓)6.0源码编译环境搭建
- Android开发环境搭建
- Android(安卓)读取安装的非系统应用程序
- android:软件的安装和卸载源代码
- Android(安卓)安装步骤
- Android(安卓)O 设备不允许安装第三方APP
- android 2.3.3编译 安装 Settings应用
- Android监听应用程序安装和卸载