由於apk的公升級在所有的應用中都會使用,所以apk靜默公升級是大部分應用必不可少的技術研究點,用普通做法,如果手機沒有root許可權的話,似乎很難實現靜默安裝,因為android並不提供顯示的intent呼叫,一般是通過以下方式安裝apk:
intent intent = new intent(intent.action_view);
startactivity(intent);
4.這時候我們執行打包乙個高新apk放在專案的assets中,最為我們要安裝的新apk:
5.**中我們將assets中的新apk拷貝到scard中:
new thread(new runnable()
inputstream.close();
fileoutputstream.flush();
fileoutputstream.close();
} catch (ioexception e)
}}).start();
6.這一步是關鍵!拷貝完我們要安裝的應用了,接著就要實現安裝:
private
static
final
int install_replace_existing = 0x00000002;
/** * 安裝
*/public
void
onclick_install(string sdpath) catch (exception e) catch (remoteexception ignore) }}
1)由於android.os.servicemanager這個類是系統乙個隱藏的類,所以這裡需要利用反射來找出它;
2)找到了服務物件,那麼我們就利用服務物件拿到ipackagemanager這個物件;
3)通過ipackagemanager呼叫installpackage()方法;
4)而packageinstallobserver是乙個***,具體實現**如下:
/**
* 安裝監聽
*/public
class
packageinstallobserver
extends
ipackageinstallobserver.stub else }}
7.如果安裝成功後我們就通過runtime執行命令啟動該應用:
public
boolean issuccess = false;
string cmd = "am start -n " + packagename + "/" + startactivityname + " \n";
process process = null;
try catch (exception e) finally
}return issuccess;
}private
static boolean returnresult(int
value) else
if (value == 1) else
}
原始包:
靜默安裝後:
小結:
靜默安裝對於系統來說是乙個敏感的話題,因為它嚴重涉及到安全性和私密性的問題,所以同樣的**,同樣的api也許在不同廠商的裝置上表現的也不太一樣,所以我們對於靜默安裝要謹慎使用,並且要不斷的嘗試了解底層的實現原理和多看看類似的api文件,拓展我們的知識層面和認知深度、廣度!
apk 靜默安裝
老大要我弄個自動更新,要用到靜默安裝,網上找到了些大拿的 我拿去改吧改吧,先貼出來 軟體靜默安裝 param apkabsolutepath apk檔案所在路徑 return 安裝結果 獲取到的result值 如果安裝成功的話是 pkg data local tmp calculator.apk n...
android 小功能 apk 靜默安裝
廢話不多說,直接上 軟體靜默安裝 param apkabsolutepath apk檔案所在路徑 return 安裝結果 獲取到的result值 如果安裝成功的話是 pkg data local tmp calculator.apk nsuccess 如果是失敗的話,則沒有結尾的 success p...
Android 靜默更新apk
內容 關於以上兩個任務,網上已經有很多例項以及文字說明了,這裡只是記錄一下自己參考他們的部落格後而寫的 demo。基本上參考上面兩個鏈結就能完全實現改功能了。3.0version new viersiondescription info 注意新增許可權 3.靜默安裝 pm install r apx...