안드로이드 SDK 31 로 변경..
카카오 SDK V2로 변경...
다른 SDK 추가 및 변경 작업...
내부 테스트 완료...
끝났다고 씐났는데... 프로덕션 배포요청을 했는데...
거부를 당했다...
아래와 같은 메일을 수신을 받음...
결론적으로는 "QUERY_ALL_PACKAGES 권한 사용을 승인할 수 없습니다." 이게 문제였다
Android 11 이상의 보안정책이 변경되었다고 한다.. 2022년 11월 부로..
https://support.google.com/googleplay/android-developer/answer/10158779?hl=ko
기존에는 Manifest.xml 에서 아래와 같이 사용을 하여 앱검토중 반려를 받았다.
<!-- SDK 30 이상부터.. 보안관련으로 심사통과 못함..-->
<!-- 아래 영역을 사용하면 안됨.. -->
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
tools:ignore="QueryAllPackagesPermission" />
현재 운영중인 앱에서는 카드사나 PG사 어플로 결제가 필요하여 따로 설정이 필요했다.
두가지 방법이 있었다.
1. 특정 패키지 이름을 추가 ( <queries>요소에 패키지 정의)
- APP to APP 으로 바로 앱을 실행 시키려면 해당 앱 특정 패키지 이름을 추가해 주면 된다.
<manifest package="com.example.game">
<queries>
<package android:name="com.example.store" />
<package android:name="com.example.services" />
</queries>
...
</manifest>
2. shouldOverrideUrlLoading() 메소드에서 startActivity() 호출 시 App 미설치로 발생하는
ActivityNotFoundException (No Activity found to handle Intent)에 예외처리 로직 추가
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (!URLUtil.isNetworkUrl(url) && !URLUtil.isJavaScriptUrl(url)) {
final Uri uri;
try {
uri = Uri.parse(url);
} catch (Exception e) {
return false;
}
if ("intent".equals(uri.getScheme())) {
return startSchemeIntent(url);
} else {
try {
startActivity(new Intent(Intent.ACTION_VIEW, uri));
return true;
} catch (Exception e) {
return false;
}
}
}
return false;
}
private boolean startSchemeIntent(String url) {
final Intent schemeIntent;
try {
schemeIntent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
} catch (URISyntaxException e) {
return false;
}
try {
startActivity(schemeIntent);
return true;
} catch (ActivityNotFoundException e) {
final String packageName = schemeIntent.getPackage();
if (!TextUtils.isEmpty(packageName)) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + packageName)));
return true;
}
}
return false;
}
위와 같이 작업을 하여 배포 완료~
올래~
= 참고 사이트 =
- https://developer.android.com/training/package-visibility/declaring?hl=ko
- https://codedaeng.tistory.com/6
'개발경험 및 메모 > Android' 카테고리의 다른 글
Android 12 (SDK 31) 로 변경 - Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` (0) | 2022.12.23 |
---|---|
Android KAKAO SDK V2 카카오 로그인 (0) | 2022.12.21 |
최근댓글