Android 응용 프로그램 목록 가 져 오기
3405 단어 Android
현재 안 드 로 이 드 11 이 곧 발 표 될 시기 입 니 다. 현재 안 드 로 이 드 핸드폰 에서 응용 프로그램 설치 목록 을 가 져 오 려 면 세 가지 차원 에서 가 져 오 는 방법, 시스템 버 전, 시스템 응용 여 부 를 구분 해 야 합 니 다.
모든 응용 목록 (시스템 응용 + 비 시스템 응용) 을 가 져 옵 니 다. 자주 사용 하 는 방법 은 셸 명령 행, 시스템 API 입 니 다.
시스템 응용 여 부 를 좀 더 구분 하려 면 상기 결 과 를 한 번 여과 하면 된다.다음은 각각 소개 한다.
1. 셸 명령 행
pm list packages
예제 코드:
private List getPkgList() {
List packages = new ArrayList();
try {
Process p = Runtime.getRuntime().exec("pm list packages");
InputStreamReader isr = new InputStreamReader(p.getInputStream(), "utf-8");
BufferedReader br = new BufferedReader(isr);
String line = br.readLine();
while (line != null) {
line = line.trim();
if (line.length() > 8) {
String prefix = line.substring(0, 8);
if (prefix.equalsIgnoreCase("package:")) {
line = line.substring(8).trim();
if (!TextUtils.isEmpty(line)) {
packages.add(line);
}
}
}
line = br.readLine();
}
br.close();
p.destroy();
} catch (Throwable t) {
t.printStacktraces();
}
return packages;
}
2. 시스템 API
PackageManager.getInstalledPackages()
예제 코드:
private List getPkgListNew() {
List packages = new ArrayList();
try {
List packageInfos = context.getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES |
PackageManager.GET_SERVICES);
for (PackageInfo info : packageInfos) {
String pkg = info.packageName;
packages.add(pkg);
}
} catch (Throwable t) {
t.printStackTrace();;
}
return packages;
}
시스템 적용 여부 판단
// 通过packName得到PackageInfo,作为参数传入即可
private boolean isSystemApp(PackageInfo pi) {
boolean isSysApp = (pi.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1;
boolean isSysUpd = (pi.applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 1;
return isSysApp || isSysUpd;
}
총화 대비
시스템 응용
비 시스템 응용
< Android 11
>= Android 11
< Android 11
>= Android 11
셸 명령
- 사용 가능 - 권한 필요 없 음
- 조건 사용 가능 - 권한 없 음: 결과 감소 (99 개) - 권한 있 음: 모든 응용 프로그램 획득 (262 개)
- 사용 가능 - 권한 필요 없 음
- 조건 부 사용 가능 - 권한 없 음: 자신 만 (1 개) - 권한 있 음: 모든 적용 가능 (2 개)
시스템 API
- 사용 가능 - 권한 필요 없 음
- 조건 사용 가능 - 권한 없 음: 결과 감소 (99 개) - 권한 있 음: 모든 응용 프로그램 획득 (262 개)
- 사용 가능 - 권한 필요 없 음
- 조건 부 사용 가능 - 권한 없 음: 자신 만 (1 개) - 권한 있 음: 모든 적용 가능 (2 개)
설명:
>= Android 11
은 targetSdkVersion 이 Android 11 이 고 11 장치 에서 실 행 됩 니 다 추가: 방송 감청 애플 리 케 이 션 설치/마 운 트 해제 행위 변화
라디오, 감청 애플 리 케 이 션 설치 와 마 운 트 해제 동작 을 사용 했다 면 안 드 로 이 드 11 에서 도 행동 변화 가 있 었 다.
요약 하면 안 드 로 이 드 11 에서 QUERY 가 없 으 면ALL_PACKAGES 권한 은 설치 동작 을 감지 할 수 없습니다.
Android 11 이전
Android 11 시작
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.