-
APK 파일 설치 요청 메서드안드로이드(스튜디오)/막 써 2019. 9. 17. 10:12반응형
/**
* APK 설치 화면 보여주기.
* support-v4 라이브러리 필요.
*
* AndroidManifest.xml에 아래 정의 필요.
* <provider
* android:name="android.support.v4.content.FileProvider"
* android:authorities="${applicationId}.provider"
* android:exported="false"
* android:grantUriPermissions="true">
* <meta-data
* android:name="android.support.FILE_PROVIDER_PATHS"
* android:resource="@xml/file_paths"/>
* </provider>
*
* res - xml 폴더에 file_paths.xml 파일 생성 및 아래 정의 필요.
* xml 파일명 변경시 AndroidManifest.xml - provider - meta-data - android:resource도 동일하게 맞춰야 함.
* <?xml version="1.0" encoding="utf-8"?>
* <paths>
* <external-path
* name="storage"
* path="."/>
* </paths>
* @param context {@link Context}
* @param apkPath apk 파일명과 확장자를 포함한 경로
* @exception FileNotFoundException apkPath로 받은 apk가 파일이 없는 경우 발생
*/
public static void showApkInstaller(Context context, String apkPath) throws FileNotFoundException{
File f = new File(apkPath);
if(!f.exists()){
throw new FileNotFoundException("Can not find apk file.");
}
Intent i = new Intent(Intent.ACTION_VIEW);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // 추가
i.setData(FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider", f)); // 추가
context.startActivity(i);
} else {
i.setDataAndType(Uri.fromFile(f), "application/vnd.android.package-archive");
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(i);
}
}반응형'안드로이드(스튜디오) > 막 써' 카테고리의 다른 글
안드로이드 스튜디오 콘솔 한글 깨짐 현상 (0) 2022.02.17 Firebase Crashlytics 적용 방법 (0) 2020.01.07 텍스트 파일 읽기, 쓰기 메서드 (0) 2019.08.30 파일탐색기 샘플 (0) 2018.11.28 파일 복사 붙여넣기 메소드 (0) 2018.10.24