Androidサイレント更新インストールと自動起動を実現
3609 ワード
プロジェクトは固定デバイスにインストールされているため、すべてのデバイスがrootされています.
一:現在のバージョン番号とサーバーバージョンは、例えば更新があればサーバーに行って新しいバージョンをダウンロードします.このネット上の多くのチュートリアルは多くありません.
二:ダウンロードしてあるディレクトリに保存し、自動的にインストールし、手動でクリックして確認する必要がなく、実際に使用しているのはsu pm install-r filepathコマンドです.コアコードは次のとおりです.
三、自己起動
ブロードキャストUpdateRestartReceiverを登録し、インストールパッケージが再インストールされているかどうかを確認します.
AndroidManifest.xmlで
静的登録ブロードキャストの有効化:
//静態登録セルフスタートブロードキャストIntent=new Intent();//インベントリファイルのreceiverのanctionに対応するintent.setAction("android.intent.action.PACKAGE_REPLACED");//ブロードキャストsendBroadcast(intent);
必要な権限:
一:現在のバージョン番号とサーバーバージョンは、例えば更新があればサーバーに行って新しいバージョンをダウンロードします.このネット上の多くのチュートリアルは多くありません.
二:ダウンロードしてあるディレクトリに保存し、自動的にインストールし、手動でクリックして確認する必要がなく、実際に使用しているのはsu pm install-r filepathコマンドです.コアコードは次のとおりです.
protected void excutesucmd(String currenttempfilepath) {
Process process = null;
OutputStream out = null;
InputStream in = null;
try {
// root
process = Runtime.getRuntime().exec("su");
out = process.getOutputStream();
//
out.write(("pm install -r " + currenttempfilepath + "
").getBytes());
in = process.getInputStream();
int len = 0;
byte[] bs = new byte[256];
while (-1 != (len = in.read(bs))) {
String state = new String(bs, 0, len);
if (state.equals("success
")) {
//
//
Intent intent=new Intent();
// receiver anction
intent.setAction("android.intent.action.PACKAGE_REPLACED");
//
sendBroadcast(intent);
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (out != null) {
out.flush();
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
三、自己起動
ブロードキャストUpdateRestartReceiverを登録し、インストールパッケージが再インストールされているかどうかを確認します.
public class UpdateRestartReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.intent.action.PACKAGE_REPLACED")){
//Toast.makeText(context," ",Toast.LENGTH_SHORT).show();
Intent intent2 = new Intent(context, SplashActivity.class);
intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent2);
}
}
}
AndroidManifest.xmlで
静的登録ブロードキャストの有効化:
//静態登録セルフスタートブロードキャストIntent=new Intent();//インベントリファイルのreceiverのanctionに対応するintent.setAction("android.intent.action.PACKAGE_REPLACED");//ブロードキャストsendBroadcast(intent);
必要な権限: