Android7.0, 8.0 apk 설치

2174 단어 Android
동적 권한 구성
파일을 다운로드하려면 동적 사용 권한이 필요합니다.
참고 자료https://blog.csdn.net/qq_27400335/article/details/79412774
 
8.0 구성에 필요한 권한
(Android8.0 이후에는 알 수 없는 출처의 apk를 직접 설치할 수 없습니다. (구글플레이에 설치된 것이 아니면 알 수 없는 출처입니다)
권한 추가
apk( )
apk File 가져오기 시작 설치
public static void installAPK(Context context,File file){
    try {
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && Build.VERSION.SDK_INT< Build.VERSION_CODES.O) {
            //         7.0   8.0
            Log.i("TAG_Success","7.0+    ");
            Uri apkUri = FileProvider.getUriForFile(context, "  .fileProvider", file);
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
            //Android 8.0   
            //          apk     true-   false-   
            boolean haveInstallPermission = context.getPackageManager().canRequestPackageInstalls();
            Uri packageURI = Uri.parse("package:" + context.getPackageName());
            if (!haveInstallPermission){ 
                //   ,         
                Intent intent2 = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES,packageURI);
                context.startActivity(intent2);
            }else {
                Uri apkUri = FileProvider.getUriForFile(context, "  ..fileProvider", file);
                intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
            }
        }else {
            // 7.0+    
            intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
        }
        context.startActivity(intent);
    }catch (Exception e){

    }

}

좋은 웹페이지 즐겨찾기