<!-- 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();        }    }}

更多相关文章

  1. android 如何调用系统自带的程序安装器安装程序
  2. Android(安卓)6.0源码编译环境搭建
  3. Android开发环境搭建
  4. Android(安卓)读取安装的非系统应用程序
  5. android:软件的安装和卸载源代码
  6. Android(安卓)安装步骤
  7. Android(安卓)O 设备不允许安装第三方APP
  8. android 2.3.3编译 安装 Settings应用
  9. Android监听应用程序安装和卸载

随机推荐

  1. Android HttpClient上传文件与Httpconnec
  2. 《Android Dev Guide》系列教程8:用户界面
  3. Android获取屏幕分辨率及DisplayMetrics
  4. 推荐--《Android深入浅出》
  5. Android系统架构-[Android取经之路]
  6. Android 自定义控件-SnakeLayout (仿galle
  7. Android studio获取证书指纹 (SHA1)的方
  8. Android命名规范,开发规范,注意点整理(一)
  9. Android通知系统源码解析
  10. Android 日历开发教程[三]