美文网首页
静默安装完成后通过广播自启动。2018-05-31

静默安装完成后通过广播自启动。2018-05-31

作者: polelice | 来源:发表于2018-05-31 21:10 被阅读0次

    Android获取root权限静默安装和自启动
    1.获取root权限静默安装
    // 静默安装
    private static boolean clientInstall(String apkPath) {
    PrintWriter PrintWriter = null;
    Process process = null;
    try {
    process = Runtime.getRuntime().exec("su");
    PrintWriter = new PrintWriter(process.getOutputStream());
    PrintWriter.println("chmod 777 " + apkPath);
    PrintWriter
    .println("export LD_LIBRARY_PATH=/vendor/lib:/system/lib");
    PrintWriter.println("pm install -r " + apkPath);
    // PrintWriter.println("exit");
    PrintWriter.flush();
    PrintWriter.close();
    int value = process.waitFor();
    return returnResult(value);
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    if (process != null) {
    process.destroy();
    }
    }
    return false;
    }
    2.安装完成后,已安装版本后含有广播接收者,检测到有安装新版本即执行启动,代码如下:
    <receiver android:name=".UpdateReceiver">
    <intent-filter>
    <action android:name="android.intent.action.PACKAGE_REPLACED"/>
    <action android:name="android.intent.action.PACKAGE_ADDED" />
    <action android:name="android.intent.action.PACKAGE_REMOVED" />
    <data android:scheme="package"/>
    </intent-filter>
    </receiver>

    public class UpdateReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        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);
    
        }
    
    
    }
    

    }

    相关文章

      网友评论

          本文标题:静默安装完成后通过广播自启动。2018-05-31

          本文链接:https://www.haomeiwen.com/subject/vqecsftx.html