如何實現Android應用的靜默安裝

2021-06-19 00:59:25 字數 1186 閱讀 1464

在很多情況下,我們需要在android系統上實現應用程式的靜默安裝,但很不幸的是,從android 1.5之後google就不再提供靜默安裝的介面了。

下面介紹一種比較簡單的靜默安裝實現方法。

原理:使用隱藏的系統api——installpackage(呼叫installpackage的應用必須是系統應用,否則在執行時會報許可權錯誤)。該方法在1.5版之後的android sdk中是看不見的,檢視原始碼可以看到它設定了@hide屬性,但在實際的執行包framework.jar中是存在的,因此只要能編譯通過,安裝到系統後是可以正常執行的。

步驟:1. 從模擬器system\framework目錄下提取framework.jar

2. 將framework.jar字尾名改為zip,解壓後提取其中的classes.dex檔案

4. 將classes.dex.dex2jar.jar改名為classes.dex.dex2jar.zip解壓取出android/content/pm/目錄下的packagemanager.class,ipackageinstallobserver.class,ipackagedeleteobserver.class及相關的幾個class檔案備用

5. 找到android-sdk目錄下的android.jar,改名為android.zip(注意改名前先備份一下),解壓後將步驟4中取得的class檔案覆蓋到android對應的目錄下,重新壓縮成android.zip,並改名為android.jar

6. 這個時候你的android.jar已經是乙個更新過的sdk了,重新開啟eclipse工程,你已經可以呼叫方法:

void android.content.pm.

packagemanager

.installpackage(

uri packageuri,

ipackageinstallobserver

observer, int flags,

string

installerpackagename)

具體呼叫方法參考f2

說明:2. 實際上該過程可以呼叫到任何hide屬性的api,本文為了影響最小,只覆蓋了installpackage相關的class

4. 以上過程在android2.2版本實施通過,其他版本理論上也可以,不過我沒試過

**:

apche如何使用rewrite實現偽靜態

1.配置 apache,啟用 rewrite 機制 在 httpd.conf 中啟用 rewrite loadmodule rewrite module modules mod rewrite.so 2.配置虛擬主機 到 c 盤 hosts 檔案新增你的 ip 和 網域名稱對應 127.0.0.1 ...

Android問答 如何實現「退出應用」功能?

剛從桌面應用開發轉做手機開發的同學常常被這個問題困擾 使用者按下home鍵後,應用不是 完全退出 而是 執行在後台 它仍然占用著系統資源,這麼多後台執行的應用必然導致系統變慢,是不是應該在我的應用裡給使用者提供乙個 退出選單 或 退出按鈕 呢?我在android開發文件裡暫時沒有找到關於這個問題的解...

用ISAPI Rewrite實現asp的靜態化

靜態頁面對於搜尋引擎的友好性是毋庸置疑的,但是,動態頁面的優勢對於站點維護的便利,論壇和其他需要程式控制的機制來說也是必需的。我們除了可以用使用內容發布系統把頁面發布為靜態html格式以外,還有另外的選擇。那就是靜態 動態頁面的對映。這裡,apache伺服器上有乙個非預設模組mod rewrite。...