2012-09-10 8 views
1

자동 업데이트 프로세스로 Android 앱을 개발해야합니다. 일부 게시물을 읽고 Intent.View를보고 코드에서 앱을 설치/업데이트합니다.Intent.View를 사용하여 Android 앱 업데이트

응용 프로그램을 설치하거나 업데이트하려면 루트 액세스가 필요합니까? 당신은 APK 설치 프로세스를 시작할 것 Intent을 해고 할 수있는 사전

답변

1

감사합니다. 일반 Android 소프트웨어 설치 프로그램을 시작합니다. 즉, 사용자가 설치를 수락하거나 거절 할 수 있습니다. 이 작업을 수행하기 위해 장치를 루트 할 필요는 없지만 사용자가 강제로 설치를 수락 할 수는 없습니다. 나는 그것이 보안 모델에있어서 정말로 나쁜 구멍이 될 것이라는 것에 동의 할 수 있다고 생각한다.

+0

고마워 ... 나는 그것을 테스트, 액션보기는 정상적인 안드로이드 소프트웨어 설치 프로그램을 보여 주지만 그것은 웹 브라우저와 함께 "전체 동작을 사용하여"보여줍니다. 이 작업을 피하기 위해 모든 양식이 존재하며 일반 Android 설치 프로그램 만 표시합니까? – jcesarms15

+0

http URL로'Intent'를 쏘는 중이라면, 안드로이드 설치 프로그램의 패키지 이름을 명시 적으로 입력하지 않고도 그걸 피할 ​​수 있다고 생각하지 않습니다. 반면 자동 업데이트 프로그램이 새 APK를 다운로드하고 로컬 파일을 가리키는 'Intent'를 실행하면 웹 브라우저를 선택해서는 안됩니다. – Argyle

0

루트 액세스이없는 경우, 다음과 같은 의도를 통해 응용 프로그램 설치 : 사용자가 다음 기존 응용 프로그램을 교체하라는 메시지가 표시됩니다 그가하라는 메시지가 표시됩니다

Intent intent = new Intent(); 
intent.setAction(android.content.Intent.ACTION_VIEW); 
intent.setFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.setDataAndType(Uri.fromFile(myFile)),"application/vnd.android.package-archive"); 
context.startActivity(intent); 

주 실제로 앱을 설치합니다.

루트 액세스을 할 당신이, 앱 설치하려면 다음 명령을 실행 할 수있는 경우 : 다음과 같은 방법으로 해당 명령을 실행하기 위해

pm install -r {myFile.getAbsolutePath()} 

당신은 라이브러리 RootTools을 사용할 수 있습니다 (https://code.google.com/p/roottools/를)

CommandCapture command = new CommandCapture(0, "pm install -r " + myFile.getAbsolutePath()); 
RootTools.getShell(true).add(command).waitForFinish(); 

앱을 설치하면 자동으로 시작되지 않습니다. 설치 의도를 포착 할 수있는 방법도 없습니다 (설치중인 응용 프로그램은 해당 이벤트를 수신하지 않습니다). 설치 후에 장치를 재부팅 한 다음 ON-Boot-Intent를 캡처 할 수 있습니다.

관련 문제