QQ는 직접 전송하는 전송 응용 기능으로 이미 설치된 설치 패키지를 어떻게 찾습니까?
휴대전화에서 우리는 일반적으로 이미 설치된 앱의 패키지를 볼 수 없지만, 때때로 우리는 재미있는 앱이나 게임을 친구에게 공유할 수도 있다.인터넷이 없는 상태에서는 어떻게 하죠?
어떤 친구가 QQ의 대면 스피드 전송을 발견하면 설치된 앱의 apk를 직접 보낼 수 있다.놀란 얼굴.내 인상에서 안드로이드 응용 프로그램은 윈도우즈 소프트웨어의 설치 패키지와 같이 일련의 파일 압축 집합이기 때문이다.실제로 설치할 때 각 파일을 압축하여 다른 디렉터리에 설치합니다.설마 QQ가 핸드폰에서 또 각 부분을 모아서 다시 포장했을까?
그래서 나는 안드로이드 응용 프로그램의 설치 과정을 알아보았는데 문제가 생각보다 그렇게 복잡하지 않다는 것을 발견했다.apk의 설치 과정에 관해서 나는 메모를 위해 글을 한 편 썼다.당신도 궁금하면 간단하게 보셔도 됩니다.Apk 설치 프로세스
간단하게 말하면 많은 내용을 풀었지만/data/app/상응하는 디렉터리에 완전한 apk를 남겼다.QQ가 하는 일은 이 파일을 찾아서 일반적인 파일로 공유하는 것이다.
그렇다면,
어떻게 대응하는 apk를 찾습니까?
PackageManager
는 시스템 설치 응용 프로그램의 목록을 제공했는데 이 목록은 매우 많은 가치 있는 정보를 제공했다ApplicationInfo
.그중의
sourceDir
필드가 우리의 목표임을 발견할 수 있다.OK, 이 두 줄 코드를 통해 apk 파일의 경로를 얻을 수 있습니다.신나지 않았어요?
//
List apps = {Activity}.getPackageManager().getInstalledApplications(0);
// apk
appInfo.sourceDir
권한 문제
앞에서 apk가
/data/app/
디렉터리에 저장되어 있다고 말한 것을 보았는데 사실 권한 문제가 매우 걱정된다.우리는 /data/
디렉터리 권한이 매우 엄격하다는 것을 알고 시스템 사용자나 같은 그룹의 사용자가 있어야만 읽기 권한을 가진다.drwxrwx--x 44 system system 4096 2018-10-08 16:17 data/
그러나 걱정하지 마십시오. 검증을 통해
/data/
와/data/app/
의other 사용자는 읽을 권한이 없지만 그 아래의 파일은other가 읽을 수 있습니다.ocean:/ $ ls -ld data/app/com.qiyi.video
drwxr-xr-x 4 system system 4096 1970-01-01 08:03 data/app/com.qiyi.video
ocean:/ $ ls -l data/app/com.qiyi.video
-rw-r--r-- 1 system system 31639584 1970-01-01 08:03 com.qiyi.video.apk
drwxr-xr-x 3 system system 4096 1970-01-01 08:03 lib
drwxrwx--x 3 system install 4096 1970-01-01 08:03 oat
신기하지 않아요?
이제 이 세상의 문도 너를 위해 열렸으니 어서 탐색해 보아라.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.