안드로이드 11이상 부터 패키지명으로 외부 앱 실행시 AndroidManifest.xml에 추가

<queries>
    <package android:name="kr.go.mobileid" />
</queries>

또는 (아래코드 사용하면 앱심사때 엄청 빡쎄게 심사 받아야됨 해당 퍼미션 사용한 이유에 대해서 소명해야되지만 거의 승인 안남)

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
    tools:ignore="QueryAllPackagesPermission" />

 

 public static boolean isAppInstalled(Context context, String package_id) {
    try {
        PackageInfo packageInfo = null;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
            packageInfo = context.getPackageManager().getPackageInfo(package_id, PackageManager.PackageInfoFlags.of((long) PackageManager.GET_ACTIVITIES));
        } else {
            packageInfo = context.getPackageManager().getPackageInfo(package_id, PackageManager.GET_ACTIVITIES);
        }
        return true;
    } catch (PackageManager.NameNotFoundException e) {
        return false;
    }
}

 

또는

Intent intent = new Intent("verify", Uri.parse("mobileid://verify"));
intent.setPackage("kr.go.mobileid");
ComponentName componentName = intent2.resolveActivity(getContext().getPackageManager());
if (componentName != null) {
	// 앱이 존재함
}

+ Recent posts