Android 8.0 버 전 업데이트 자동 설치 불가 해결 방법

머리말
며칠 전 앱 이 새 버 전 을 출시 했 는데 일부 사용자 들 은 패 키 지 를 다운로드 한 뒤 설 치 를 클릭 하면 반응 이 없다 는 반응 을 보 였 다.이 부분의 사용자 휴대 전화의 시스템 버 전 을 조사해 보 니 모두 8.0+버 전이 다.새 버 전의 특성 에 너무 오랫동안 관심 을 갖 지 않 아 이 문제 가 발생 했다.
Android 8.0(Android O)는 일부 건달 소프트웨어 를 대상 으로 사용자 에 게 다른 무관 한 응용 프로그램 을 설치 하도록 유도 하기 위해 서 입 니 다.응용 권한 이 설정 한'특수 접근 권한'에'다른 응용 프로그램 설치'설정 을 추가 했다.
이루어지다
1.목록 파일 권한 설명

<uses-permissionandroid:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
2.설치 버튼 을 눌 러 권한 여 부 를 판단

 if (Build.VERSION.SDK_INT >= 26) { 
    //            apk
    boolean installAllowed= getPackageManager().canRequestPackageInstalls(); 
    //   
    if (installAllowed) { 
      //  apk
      install(apkPath);
    } else { 
      //        
      ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.REQUEST_INSTALL_PACKAGES}, INSTALL_APK_REQUESTCODE); 
    } 
  } else { 
    install(apkPath); 
} 
권한 리 셋 신청

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
  super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
  switch (requestCode) { 
    case INSTALL_APK_REQUESTCODE: 
      //            
      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        install(apkPath); 
      } else { 
        //              。
        Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES); 
        startActivityForResult(intent, GET_UNKNOWN_APP_SOURCES); 
      } 
      break; 

  } 
} 
APK 설치

private void install(String apkPath) {
    //7.0    FileProvider
    if (Environment.SYSTEM_VERSION_CODE >= 24) {
      Uri uri = FileProvider.getUriForFile(context, Environment.FILE_PROVIDER_AUTHORITY, new File(apkPath));
      Intent intent = new Intent(Intent.ACTION_VIEW).setDataAndType(uri, "application/vnd.android.package-archive");
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
      context.startActivity(intent);
    } else {
      Intent intent = new Intent(Intent.ACTION_VIEW);
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      intent.setDataAndType(Uri.parse("file://" + apkPath), "application/vnd.android.package-archive");
      context.startActivity(intent);
    }
}
그림 업데이트

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기