3

私はアプリを開発し、それ自体を更新し、次の機能が必要です。デバイスはルート化されています:

1 自動チェックは開始ごとに更新できます (実行できます)
2 apk ファイルをローカルにダウンロードします (実行できます)
3 カスタム ダイアログで更新するか、サイレントに更新します (わかりません)

編集:私のアプリはリモコン付きのテレビで実行されます。デフォルトのダイアログは制御できますが完璧なので、ダイアログが必要な場合は私のダイアログを使用したい.ダイアログが必要ない場合は最高.

4

3 に答える 3

2

最初にこの変数を宣言してから、必要な場所で関数を呼び出します。次に、スーパーユーザーアプリケーションでスーパーユーザーを許可し、ユーザー以外の操作に対して常に許可するオプションをオンにします。

  @Override
  public void onCreate() {
    super.onCreate();
            //some code...
             final String libs = "LD_LIBRARY_PATH=/vendor/lib:/system/lib ";

             final String commands = libs + "pm install -r " + "your apk directory"+ "app.apk";

             instalarApk(commands); 
 }

   private void instalarApk( String commands ) {
    try {

        Process p = Runtime.getRuntime().exec( "su" );
        InputStream es = p.getErrorStream();
        DataOutputStream os = new DataOutputStream(p.getOutputStream());

        os.writeBytes(commands + "\n");

        os.writeBytes("exit\n");
        os.flush();

        int read;
        byte[] buffer = new byte[4096];
        String output = new String();
        while ((read = es.read(buffer)) > 0) {
            output += new String(buffer, 0, read);
        }

        p.waitFor();

    } catch (IOException e) {
        Log.v(Debug.TAG, e.toString());
    } catch (InterruptedException e) {
        Log.v(Debug.TAG, e.toString());
    }
}
于 2014-05-29T13:50:47.110 に答える
0

通常の方法 (ルートとデフォルトのインストーラー ダイアログなし) は別の質問で説明されており、更新機能のためにルート権限を要求するのが嫌いなので、ほとんどの場合、私見で使用する必要があります。

カスタム ダイアログの提供と apk のサイレント インストールに違いはありません。技術的にはどちらもサイレント インストールです (たとえば、インストール アクティビティによって作成されたものではありません)。root 権限があれば、root シェルを使用して、(オープンソースの keybord manager app のように) apk を置き換えるか、シェルからパッケージ マネージャーを呼び出すことができます。2 番目の方法をお勧めします。主にルート シェルの作成用にキーボード マネージャー アプリのソースをリンクしました。

于 2013-09-03T03:48:10.823 に答える