2013-02-20 2 views
18

TL : DR; 버전)자동 업데이트 앱

  • 사용자의 개입없이 (자동 시작 등 작동)

  • 그것이 APK를 통해 (자신을 업데이트해야합니다) 사용자 상호 작용없이 실행해야 내 응용 프로그램

  • 뿌리 장치가 가능

.

문제 : (?보기) 서버에서 새로운 APK를 조회

  • 는 함께 APK를 시작할 때 의도 프롬프트 팝 "응용 프로그램을 설치"
  • 을 작동하고 사용자 확인이 필요

사용자 상호 작용없이 어떻게 해결할 수 있습니까?

http://code.google.com/p/auto-update-apk-client/ 이것은 해결책 인 것처럼 보이지만 더 나은 접근 방식이어야합니다. Install Application programmatically on Android

하지만 그건 내 문제가 해결되지 않습니다

나는 이미이 발견했다.

답변

31

그것을 해결 : 인터넷을 통해 확산 많은 자원이있다! : D

뿌리가 달린 장치에서 작동하지만 완벽하게 작동합니다. unix cmd "pm"(packageManager)을 사용하면 루트로 실행할 때 sdcard에서 apks를 설치할 수 있습니다.

희망은 앞으로 어떤 사람들을 도울 수 있기를 바랍니다.

public static void installNewApk() 
{ 
     try 
     { 
      Runtime.getRuntime().exec(new String[] {"su", "-c", "pm install -r /mnt/internal/Download/fp.apk"}); 
     } 
     catch (IOException e) 
     { 
      System.out.println(e.toString()); 
      System.out.println("no root"); 
     } 
} 

필요한 권한 :

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
+0

오류 코드 139, 즉 세그먼트 오류가 발생합니다. 하지만 내 태블릿은 이미 뿌리를 냈습니다. 왜 그런가? – jeevs

+0

루틴 된 태블릿에서이 코드를 실행하는 데 필요한 사용 권한은 무엇입니까? – jeevs

+4

내가 할 수 있으면, 나는이 100 배 upvote 것이다! – Ben

5

내 제안은 앱을 업데이트하는 플러그인 메커니즘을 사용하는 것입니다. 사용자 상호 작용없이 웹에서 클래스를 동적으로로드하고 앱 내에서 실행할 수 있습니다.

How to load a Java class dynamically on android/dalvik?

http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html

+0

좋은 생각, 나는 그것을 시도주지,하지만 어쨌든 좀 더 강력하고 덜 오류 경향이있을 것 인 APK를 사용하여 업데이트하는 생각. – Thkru

+0

이것의 주된 문제점은 다음과 같이 새로운 활동을 추가 할 수 없다는 것입니다. – Selvin

+0

좋은 점, 선택은 매우 구체적인 필요에 달려 있습니다 – Zielony