十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
首先,你需要知道什么是adb。adb工具即Android Debug Bridge(安卓調(diào)試橋)?tools。adb可以在電腦上方便連接手機(jī)并控制手機(jī)。使用adb可以在電腦上對(duì)手機(jī)進(jìn)行安裝apk、執(zhí)行shell命令等。
創(chuàng)新互聯(lián)公司主營高坪網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,App定制開發(fā),高坪h5微信小程序搭建,高坪網(wǎng)站營銷推廣歡迎高坪等地區(qū)企業(yè)咨詢
所以,c#使用adb 給android安裝應(yīng)用程序就非常簡單啦,百度下載adb(你也可以下載我上傳的附件),解壓adb.exe、AdbWinApi.dll和AdbWinUsbApi.dll到你的c#程序目錄下,然后直接調(diào)用
Porcess.Start("adb.exe","install?E:\\app.apk");//其中E:\app.apk是apk的路徑
執(zhí)行這個(gè)命令你的手機(jī)必須啟用USB調(diào)試,有的手機(jī)還會(huì)彈窗提示。
adb工具包:
若手機(jī)總有軟件自動(dòng)下載安裝,多是第三方軟件出現(xiàn)問題,建議:
1.卸載最新下載的一些軟件嘗試。
2.備份數(shù)據(jù)(聯(lián)系人、短信、照片等),恢復(fù)出廠設(shè)定嘗試。
若問題依然存在,建議攜帶機(jī)器、購機(jī)發(fā)票、包修卡至當(dāng)?shù)氐氖酆蠓?wù)中心進(jìn)行檢測(cè)。
安卓手機(jī)軟件可以開啟服務(wù),服務(wù)可以在后臺(tái)下載軟件;如果您的手機(jī)root以后,安卓手機(jī)也可以自動(dòng)安裝軟件,又叫靜默安裝。應(yīng)該這樣來防止安卓手機(jī)的自動(dòng)下載安裝:1、不要隨表root您的手機(jī);如果您不是專業(yè)技術(shù)人員,很難管理root后的手機(jī)的安全。 2、安裝的軟件盡量用大公司開發(fā)的軟件;尤其像手機(jī)助手:用百度、360、騰訊等大公司的手機(jī)助手;大公司的軟件用戶體驗(yàn)好、不會(huì)有惡意行為(有下載也會(huì)提醒您的)。 3、在不使用手機(jī)時(shí)要關(guān)閉流量和wifi,這樣也可以省電哦! 4、不經(jīng)常用的手機(jī)軟件還是卸載了比較好,這樣還能讓手機(jī)運(yùn)行的更快。 5、發(fā)現(xiàn)惡意軟件,立即卸載、舉報(bào)。
原理
靜默安裝、卸載的原理就是利用pm install命令來安裝apk,pm uninstall 來卸載apk.
智能安裝是利用android系統(tǒng)提供的無障礙服務(wù)AccessibilityService,來模擬用戶點(diǎn)擊,從而自動(dòng)安裝.
//靜默安裝
private?void?installSlient()?{
String?cmd?=?"pm?install?-r?/mnt/sdcard/test.apk";
Process?process?=?null;
DataOutputStream?os?=?null;
BufferedReader?successResult?=?null;
BufferedReader?errorResult?=?null;
StringBuilder?successMsg?=?null;
StringBuilder?errorMsg?=?null;
try?{
//靜默安裝需要root權(quán)限
process?=?Runtime.getRuntime().exec("su");
os?=?new?DataOutputStream(process.getOutputStream());
os.write(cmd.getBytes());
os.writeBytes("\n");
os.writeBytes("exit\n");
os.flush();
//執(zhí)行命令
process.waitFor();
//獲取返回結(jié)果
successMsg?=?new?StringBuilder();
errorMsg?=?new?StringBuilder();
successResult?=?new?BufferedReader(new?InputStreamReader(process.getInputStream()));
errorResult?=?new?BufferedReader(new?InputStreamReader(process.getErrorStream()));
String?s;
while?((s?=?successResult.readLine())?!=?null)?{
successMsg.append(s);
}
while?((s?=?errorResult.readLine())?!=?null)?{
errorMsg.append(s);
}
}?catch?(Exception?e)?{
e.printStackTrace();
}?finally?{
try?{
if?(os?!=?null)?{
os.close();
}
if?(process?!=?null)?{
process.destroy();
}
if?(successResult?!=?null)?{
successResult.close();
}
if?(errorResult?!=?null)?{
errorResult.close();
}
}?catch?(Exception?e)?{
e.printStackTrace();
}
}
//顯示結(jié)果
tvTest.setText("成功消息:"?+?successMsg.toString()?+?"\n"?+?"錯(cuò)誤消息:?"?+?errorMsg.toString());
}