2013-02-20 26 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)を使用すると、rootとして実行するときにsdcardからapkをインストールできます。

これは将来、一部の人々に役立つことを期待しています。

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

私の提案は、アプリを更新するプラグインメカニズムinstadを使用することです。あなたは、Webからクラスを動的にロードし、ユーザの介入なしにアプリ内で実行することができます。

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

関連する問題