應用黑名單以及靜默安裝的實現
需求描述:
1.主要給上層應用提供一個新增應用黑名單介面,被新增到黑名單的應用使用者無法對其進行安裝。同時也可以對這個黑名單進行增加和刪除
2.給上層應用提供一個靜默安裝解除安裝的介面,應用呼叫這個介面可以實現應用的靜默安裝和解除安裝。
具體實現:
一.應用黑名單新增:
1.在PackageManagerService中建立一個資料庫用來儲存這些應用的包名,同時實現對於此資料庫的增刪改查。
2.在handleStartCopy()函式中去讀取資料庫遍歷和安裝的包名進行對比,如果存在於黑名單就不進行安裝同時返回不安裝的資訊。
程式碼:
List packageName = new ArrayList();
packageName = getAppRestriction();
if(packageName != null) {
for(String pakgs : packageName) {
if(pkgLite.packageName.equals(pakgs)) {
ret = PackageManager.INSTALL_FAILED_INVALID_URI;
break;
} else {
ret = PackageManager.INSTALL_SUCCEEDED;
}
}
} else {
ret = PackageManager.INSTALL_SUCCEEDED;
}
二.靜默安裝的實現:
1.通過解析pm命令的方式進行靜默安裝,因為考慮到重複安裝的情況,所以使用pm install -r命令。
2.但是在手機沒有root的情況下,pm命令是安裝不成功的,原因在於PackageManagerService的installPackageAsUser()函式有一個許可權的檢查,
所以在這裡新增包名判斷來確定進不進行許可權檢查。
程式碼:
final int callingUid = Binder.getCallingUid();
if(getNameForUid(callingUid) != null) {
if(!getNameForUid(callingUid).equals(“com.example.requiredemo”)) {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.INSTALL_PACKAGES, null);
}
} else
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.INSTALL_PACKAGES, null);
相關文章
- Android靜默安裝應用和靜默解除安裝應用Android
- 靜默安裝功能的實現
- Oracle靜默安裝(單機)Oracle
- Android靜默安裝和靜默解除安裝Android
- 【11g 單庫解除安裝、靜默安裝】實驗
- Android 無需root實現apk的靜默安裝AndroidAPK
- rac靜默安裝
- dbca 靜默安裝
- Oracle 靜默安裝Oracle
- Oracle靜默安裝Oracle
- oracle安裝:使用響應檔案靜默安裝Oracle
- android靜默安裝apk已經成功實現AndroidAPK
- weblogic12C 的靜默安裝以及建立域Web
- PackageInstaller 5.0原始碼分析靜默安裝與靜默解除安裝Package原始碼
- 靜默安裝Azure CLI
- 靜默安裝ORACLE(文件)Oracle
- Android 流氓軟體靜默安裝是怎麼實現的?Android
- Oracle資料庫靜默安裝實踐Oracle資料庫
- oracle靜默安裝raw裝置Oracle
- 靜默安裝oracle時報錯Oracle
- ORACLE 11.2.0.4靜默安裝Oracle
- 靜默安裝oracle軟體Oracle
- 靜默安裝、建庫(轉)
- 靜默安裝ORACLE 軟體Oracle
- Oracle靜默安裝說明Oracle
- Android 靜默安裝/後臺安裝Android
- 【靜默】在RHEL 6.5上靜默安裝Oracle 18cOracle
- android apk靜默安裝和解除安裝AndroidAPK
- android 4.0.4系統下實現apk的靜默安裝和啟動AndroidAPK
- oracle 19C 靜默安裝Oracle
- Linux下靜默安裝OraceLinux
- 靜默安裝and手動建庫
- oracle 12c 靜默安裝Oracle
- Oracle 11g 靜默安裝Oracle
- 靜默安裝oracle10gOracle
- AIX 6.1 靜默安裝11.1.0.6AI
- oracle10g 靜默安裝Oracle
- Oracle 10g 靜默安裝Oracle 10g