Android 에서 기본 프로그램 을 검사,설정 합 니 다.
기본 프로그램 이 있 는 지 확인 하기
검 사 는 필수 적 이다.결 과 는 우리 가 다음 단계 에 어떻게 해 야 하 는 지 에 달 려 있 기 때문이다.
public void testGetDefaultActivity() {
PackageManager pm = mContext.getPackageManager();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.google.com"));
ResolveInfo info = pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
Log.i(VIEW_LOG_TAG, "getDefaultActivity info = " + info + ";pkgName = " + info.activityInfo.packageName);
}
대응 하 는 로그 출력 은 다음 과 같 습 니 다.
I/View ( 1145 ): View getDefaultActivity info = ResolveInfo{410e4868 com.android.internal.app.ResolverActivity p=0 o=0 m=0x0};pkgName = android
기본 프로그램 이 없 으 면 기본적으로 com.android.internal.app.Resolver Activity 가 표 시 됩 니 다.이 Resolver Activity 는 무엇 입 니까?사실은 프로그램 을 여 는 대화 상자 입 니 다.여산 의 정 체 는 이 렇 습 니 다.만약 우리 가 오 유 브 라 우 저 를 기본 브 라 우 저 로 설정 했다 면,기본 프로그램 은 오 유 브 라 우 저 에 관 한 정 보 를 표시 해 야 합 니 다.다음 과 같 습 니 다.
I/View ( 1145 ): View getDefaultActivity info = ResolveInfo{410ae1e8 com.mx.browser.MxBrowserActivity p=0 o=0 m=0x208000};pkgName = com.mx.browser
기본 프로그램 이 설정 되 어 있 는 지 여 부 를 어떻게 판단 합 니까?위의 방법 은 기본 ResolveInfo 입 니 다.info.activity Info.packageName 이 android 라면 설정 되 어 있 지 않 습 니 다.그렇지 않 으 면 기본 프로그램 이 있 습 니 다.
public final boolean hasPreferredApplication(final Context context, final Intent intent) {
PackageManager pm = context.getPackageManager();
ResolveInfo info = pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
return !"android".equals(info.activityInfo.packageName);
}
기본 프로그램 이 있 으 면우리 가 해 야 할 일 은 현재 기본 프로그램의 기본 설정 을 지 우 는 것 입 니 다.
우 리 는 코드 를 통 해 기본 설정 을 우리 의 것 으로 직접 바 꿀 수 있 습 니까?사실은 안 됩 니 다.권한 의 문제 때 문 입 니 다.이러한 안 드 로 이 드 는 리 눅 스 커 널 을 기반 으로 하기 때문에 리 눅 스 는 좋 은 사용자 개념 을 가지 고 있 습 니 다.안 드 로 이 드 의 모든 응용 프로그램 은 리 눅 스 커 널 에 있 는 사용자 입 니 다.두 등급 이 같은 사용 자 는 상대방 을 삭제 할 수 없습니다.
그래서 우 리 는 사용자 에 게 수 동 으로 만 할 수 있 습 니 다.물론 이것 도 대부분의 프로그램의 방법 입 니 다.당신 이 해 야 할 일 은 사용 자 를 프로그램 상세 페이지 로 가 져 가 는 것 입 니 다.이 코드 를 통 해 응용 상세 페이지 로 이동 할 수 있 습 니 다.
public void testStartAppDetails() {
//Use the destination package name
Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:com.mx.browser"));
getActivity().startActivity(intent);
}
설 치 된 응용 프로그램 상세 페이지 로 이동 하면 사용 처 를 알려 주 고 Clear Default 단 추 를 눌 러 야 합 니 다.만약 에 사용자 가 설치 상세 페이지 에서 프로그램 으로 돌아간다 면 사용자 가 기본 적 인 프로그램 설정 을 정 리 했 는 지 확인 하고 근거 가 있 는 지,기본 적 인 프로그램 설정 이 있 는 지 판단 해 야 합 니 다.기본 적 인 것 이 있다 면 사용자 가 완전히 정리 한 후에 아래 의 기본 설정 프로그램 이 없 는 상황 에 따라 처리 해 야 한 다 는 것 을 계속 알려 야 합 니 다.
브 라 우 저 를 설정 할 때 UC 기본 설정 을 먼저 정리 한 후 돌고래 브 라 우 저 를 정리 해 야 하 는 경우 가 여러 번 있 습 니 다.
기본 프로그램 이 없습니다.
기본 프로그램 이 없 으 면 우리 가 원 하 는 프로그램 을 기본 으로 설정 해 야 합 니 다.그러나 이 페이지 는 코드 에서 이 루어 지지 않 으 려 면 인위적인 상호작용 선택 이 필요 합 니 다.당신 이 해 야 할 일 은 다음 과 같은 코드 를 사용 한 다음 에 힌트 를 꺼 내 서 사용자 에 게 프로그램 을 기본 프로그램 으로 선택 하 라 고 알려 주 는 것 입 니 다.제시 어 는 상상력 을 충분히 발휘 할 수 있 습 니 다.
public void testStartChooseDialog() {
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
intent.addCategory("android.intent.category.BROWSABLE");
intent.setData(Uri.parse("http://jb51.net"));
intent.setComponent(new ComponentName("android","com.android.internal.app.ResolverActivity"));
getActivity().startActivity(intent);
}
기본 프로그램 설정 취소
public void testClearDefault() {
PackageManager pm = mContext.getPackageManager();
pm.clearPackagePreferredActivities(mContext.getPackageName());
}
위 방법 은 기본 설정 만 정리 할 수 있 습 니 다.한 걸음 더 가까이
실제 기본 설정 에 대한 프로필 은/data/system/packages.xml 에 저 장 됩 니 다.
<preferred-activities>
<item name="com.mx.browser/.MxBrowserActivity" match="200000" set="2">
<set name="com.android.browser/.BrowserActivity" />
<set name="com.mx.browser/.MxBrowserActivity" />
<filter>
<action name="android.intent.action.VIEW" />
<cat name="android.intent.category.BROWSABLE" />
<cat name="android.intent.category.DEFAULT" />
<scheme name="http" />
</filter>
</item>
</preferred-activities>
One More Thing질문:프로그램 이 설치 되 거나 마 운 트 해제 되면 시스템 은 무엇 을 합 니까?
응답:프로그램 이 설치 되 거나 마 운 트 해제 되 었 을 때,브 라 우 저 를 예 로 들 면,오 유 브 라 우 저 를 설치 하거나 UC 브 라 우 저 를 마 운 트 해제 했다 면,외부 프로그램 에서 링크 를 열 었 을 때,시스템 은 이전의 기본 프로그램 을 사용 하지 않 고 선택 대화 상 자 를 팝 업 합 니 다.
질문:언제 시스템 팝 업 선택 프로그램 목록 열기
대답:본인 의 테스트 를 통 해 실제 적 으로 이 렇 습 니 다.Intent 가 왔 을 때 시스템 은 처리 할 수 있 는 Activity 를 동적 으로 수집 한 다음/data/system/packages.xml 에서 읽 고 비교 합 니 다.둘 이 다 르 면 선택 대화 상 자 를 팝 업 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.