国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android程序靜默安裝安裝后重新啟動APP的方法

2019-10-22 18:16:25
字體:
來源:轉載
供稿:網友

 一:需求簡介

  之前boss提出一個需求,運行在廣告機上的app,需要完成自動升級的功能,廣告機是非觸摸屏的,不能通過手動點擊,所以app必須做到自動下載,自動安裝升級,并且安裝完成后,app還要繼續運行,最好不借助其它app來實現以上功能。

 二:實現思路

  實現這個功能第一個想到的方法就是靜默安裝,由于廣告機已經root,靜默安裝比較順利,安裝app的主要代碼如下:

/*  @pararm apkPath 等待安裝的app全路徑,如:/sdcard/app/app.apk**/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();      Logger.e("靜默安裝返回值:"+value);      return returnResult(value);    } catch (Exception e) {      e.printStackTrace();      Logger.e("安裝apk出現異常");    } finally {      if (process != null) {        process.destroy();      }    }    return false;  }

  以上方法能順利安裝,但不能實現軟件安裝完成后,軟件還能繼續運行,因為安裝后,當前app的進程已經被kill了。無法實現boss提出的,安裝后軟件正常運行的需求,此時如果我們還想著用android來實現這個需求,是無法實現的,因為app進程被kill了,所以需要借助第三方來啟動我們的app,我第一時間想到的就是linux執行am start命令,但這個命令不能立即執行,所以需要sleep來實現這個需求,命令格式如下 sleep 時間(單位秒),am start -n ,完整代碼如下:

private void execLinuxCommand(){     String cmd= "sleep 120; am start -n 包名/包名.第一個Activity的名稱";    //Runtime對象    Runtime runtime = Runtime.getRuntime();    try {      Process localProcess = runtime.exec("su");      OutputStream localOutputStream = localProcess.getOutputStream();      DataOutputStream localDataOutputStream = new DataOutputStream(localOutputStream);      localDataOutputStream.writeBytes(cmd);      localDataOutputStream.flush();      Logger.e("設備準備重啟");    } catch (IOException e) {      Logger.i(TAG+"strLine:"+e.getMessage());      e.printStackTrace();    }  }

   涉及到的權限:

<uses-permission android:name="android.permission.INSTALL_PACKAGES" />

   注意:不是所有root過的設備,都能執行Process localProcess = runtime.exec("su");這個需要硬件支持,這個坑我遇到過。通過以上兩個方法就能實現靜默安裝,安裝完成后,app自動需行的需求。

總結

以上所述是小編給大家介紹的Android程序靜默安裝安裝后重新啟動APP的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 杭锦旗| 古丈县| 色达县| 东乡县| 叶城县| 特克斯县| 墨脱县| 合作市| 扶风县| 孝昌县| 达孜县| 陈巴尔虎旗| 贺兰县| 安溪县| 奉化市| 和龙市| 北流市| 湘乡市| 灵丘县| 阜城县| 方城县| 田东县| 富裕县| 洪雅县| 沁源县| 东明县| 昌都县| 那曲县| 永顺县| 洪湖市| 南充市| 涟源市| 开平市| 合川市| 广州市| 南投县| 冀州市| 从江县| 多伦县| 仁寿县| 汝城县|