2011-01-03 4 views
8

/sdcard/ 다운로드에 저장된 설치 프로그램 파일 이름을 가져올 수 있습니다 /? 나는 그것을 설치 한 apk 파일 이름에서 app을 얻고 싶다. 비 시장 앱에서 특히 쉽게 할 수있는 방법이 있습니까?Android : 설치 프로그램 파일 이름을 프로그래밍 방식으로 얻는 방법?

+0

"설치 프로그램 파일 이름"은 무엇을 의미합니까? APK의 이름? 그렇다면 왜 그걸 원하니? 자세한 내용을 입력하십시오. –

+0

예 sd 카드에 저장된 apk의 이름을 얻고 싶습니다. 나는 apk 파일을 만들고 서버에 저장했다. 누군가 그것을 다운로드하려고 할 때 서버는 예를 들어 "application00086.apk"라는 고유 한 이름을 가진 파일을 생성한다. 문제는 다음과 같습니다 : 설치 후// data/app/getInstallerPackageName이라는 재미있는 방법을 찾았지만이 메소드는 설치 프로그램 패키지 이름 만 반환하고 Android 마켓에 배포 된 응용 프로그램 만이 고유 한 파일 이름을 디렉토리 설치 프로그램 파일 NAME을 (를) 받고 Market에 내 앱을 배포하고 싶지 않습니다. – Wolfie

+0

@ Wolfie : 나는 당신과 같은 문제에 직면 해있다. 당신은 이것을위한 해결책을 얻었습니까? 고마워요! – hoang8f

답변

2

더 좋은 방법은 분명히 매니페스트에 버전 문자열을 포함시키는 것입니다. 이것은 실제로 신뢰할 수있는 (그리고 전문적인) 방법입니다. Android는 APK가있는 파일의 이름을 어디에도 저장하지 않으므로 가져올 수있는 방법이 없습니다. 이론적으로

당신은 아마 FileObserver, 특정 디렉토리에있는 것을 보았다 파일 생성 및 파일이 확장자 .apk 당신이 파일을 열 매니페스트를 추출 할 수있는 사용하여 만든 모든 시간을 사용하여 뭔가를 만들 수는 APK의 패키지 이름을 찾아 이것을 파일 이름과 함께 일부 영구 저장소에 저장하십시오. 그런 다음 버전 정보를 얻으려면 영구 저장소에서 필요한 패키지 이름과 일치하는 파일 이름을 찾습니다.

전에 앱을 에 설치하고 다른 APK 파일을 다운로드/설치 한 경우에만 작동합니다. 이것은 자신의 응용 프로그램의 파일 이름을 찾는 데는 효과가 없습니다.

1

흠, 난 당신의 sdcard 또는 다운로드 폴더가 무슨 뜻인지 잘 모르겠지만, 당신은 시스템/데이터 디렉토리에 APK 경로를 얻을 수 :

명령 행 :

$ adb shell pm list packages | grep mk.trelloapp 
package:mk.trelloapp 
$ adb shell pm path mk.trelloapp 
package:/data/app/mk.trelloapp-1/base.apk 

또는 안드로이드 응용 프로그램에서 코드 : (간단하게 실행 프로세스)

 Process exec = Runtime.getRuntime().exec("pm path mk.trelloapp"); 

     exec.waitFor(); 

     InputStream inputStream = exec.getInputStream(); 
     BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); 

     StringBuilder builder = new StringBuilder(); 
     String line = null; 
     while((line = br.readLine()) != null) { 
      builder.append(line); 
     } 

     String commandOutput = builder.toString(); 

위의 코드는 단순히 당신에게 문자열 포함 "패키지 : /data/app/mk.trelloapp-1/base.apk"제공해야

/data 디렉토리의 경로를 가져올 때 다른 디렉토리에서 동일한 (비슷한 파일) 파일을 검색하려고 시도 할 수 있습니다 (삭제되지 않았다고 가정). 설치 중에 Android 패키지가/data 디렉토리에 복사되기 때문입니다.

+0

이것은 도움이되지 않습니다. OP는 자신의 앱 버전 번호가 해당 파일 이름의 일부로 인코딩 되었기 때문에 다운로드 한 APK 파일의 원래 파일 이름을 가져올 수 있기를 원합니다. '/ data'에 대한 APK 경로에는 패키지 이름 만 사용되므로이 정보는 포함되지 않습니다. –

관련 문제