[AOS] PackageInfo #move other app

2024. 2. 8. 13:40dev/aos

728x90
반응형

 

안드로이드 11(API 30)부터 앱의 패키지 공개 상태를 지정해주어야 접근이 가능하다.

    try {
        val packageInfo = pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES)
        NLog.i("packageInfo")
        if (packageInfo != null) {
            this.appExistText.text = "true"
        }
    } catch (e: PackageManager.NameNotFoundException) {
        NLog.e(e.stackTraceToString())
    }

 

현재 계속해서 에러를 뿜고 있지만,

해당 앱의 Manifest.xml에 타겟 앱의 쿼리를 추가해주면 특정 패키지 조회가 가능하다.

    <queries>
        <package android:name="com.donguran.sample" />
    </queries>

 

또는 모든 패키지를 조회하고 싶은 경우 permission추가

- 권장되지 않음

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

 

 

https://developer.android.com/training/package-visibility?hl=ko

 

Android에서 패키지 공개 상태 필터링  |  Android 개발자  |  Android Developers

Android에서 패키지 공개 상태 필터링 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 앱에서 Android 11(API 수준 30) 이상을 타겟팅하고 기기에 설치된 다른 앱

developer.android.com

 

 

activity이동

    moveButton.setOnClickListener {
        /*val componentName = ComponentName(packageName, "$packageName.IntroActivity")
        val intent = Intent(Intent.ACTION_VIEW)
        intent.apply {
            addCategory(Intent.CATEGORY_LAUNCHER)
            component = componentName
        }.also {
            startActivity(it)
        }*/
        val intent = pm.getLaunchIntentForPackage(packageName)
        intent?.let {
            startActivity(it)
        }
    }
728x90
반응형

'dev > aos' 카테고리의 다른 글

[Kotlin] Map  (0) 2024.03.20
[AOS] Kakao Login  (0) 2024.02.13
[AOS] RecyclerView  (0) 2024.02.06
[AOS] Timer  (0) 2024.02.06
[AOS] lazy init binding  (0) 2024.02.05