Android使用init.rc觸發指令碼實現隱藏內建應用程式

來源:互聯網
上載者:User

Android使用init.rc觸發指令碼實現隱藏內建應用程式
【實現邏輯】 通過在property_service.c中設定標誌位,在設定中實現介面改變標誌位, 使用init.rc中聲明的服務來偵聽標誌位的變化,顯式啟動聲明的服務,執行對應的指令碼,把應用尾碼從apk重新命名為bak,從而實現隱藏(顯示邏輯相反)。
【實現步驟】以隱藏Google Play Store(system/priv-app/Phonesky.apk)為例: 1.首先在system/core/init/property_service.c中聲明並初始化標誌位,0為隱藏,1為顯示,預設隱藏

     { app.launcher.start, AID_SYSTEM, 0},+   { app.phonesky.show, AID_SYSTEM, 0}, //Add By zj     { cdma.,        AID_RADIO,    0 },    //Add by gfzhu VIA


2.在設定的開發人員選項中實現對應的介面: 檔案路徑:packages/apps/Settings/src/com/android/settings/DevelopmentSettings.java ①聲明和初始化:
private static final String SHOW_PHONESKY = show_phonesky;private CheckBoxPreference mShowPhonesky;mShowPhonesky = findAndInitCheckboxPref(SHOW_PHONESKY);

②CheckBox的邏輯:
       (BatteryManager.BATTERY_PLUGGED_AC | BatteryManager.BATTERY_PLUGGED_USB) : 0);+      } else if (preference == mShowPhonesky) { // ZJ Add+           if(mShowPhonesky.isChecked())+           {+              SystemProperties.set(app.phonesky.show,1);+           }else{+              SystemProperties.set(app.phonesky.show,0);+           }         } else if (preference == mBtHciSnoopLog) {



③增加一個Preference: packages/apps/Settings/res/xml/development_prefs.xml
     android:targetClass=com.android.settings.SetFullBackupPassword />     +            ④添加對應語言的string字元:
Show Google Play Store


⑤設定中新增一個監聽,初始化Checkbox的邏輯: packages/apps/Settings/src/com/android/settings/BootReceiver.java 內容如下:
package com.android.settings;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.os.SystemClock;import android.util.Log;import android.os.SystemProperties;public class BootReceiver extends BroadcastReceiver{     @Override     public void onReceive(Context arg0, Intent arg1) {          // TODO Auto-generated method stub                    String action = arg1.getAction();          if(action.equals(Intent.ACTION_BOOT_COMPLETED))          {              SharedPreferences shared = arg0.getSharedPreferences(com.android.settings_preferences, Context.MODE_PRIVATE);             boolean show_phonesky = shared.getBoolean(show_phonesky, false);             if(show_phonesky){                  SystemProperties.set(app.phonesky.show,1);                    }else{                    SystemProperties.set(app.phonesky.show,0);                    }          }     }}


⑥在Settings的AndroidManifest檔案中添加BroadcastReceiver的許可權和聲明:

3.在init.rc中添加對應的服務和觸發條件: 路徑:mediatek/config/esky27_tb_ccn_mlc_kk/init.rc
+# ZJ Add START+#Hide or Show Google Play Dynamicly+#disabled:服務不會自動運行,必須顯式地通過伺服器來啟動。+#oneshot:當此服務退出時不會自動重啟。+service hidePhonesky /system/bin/hidePhonesky+       disabled+       oneshot    +service showPhonesky /system/bin/showPhonesky+       disabled+       oneshot    +#on property:sys.boot_completed=1+#   start renamePhonesky+on property:app.phonesky.show=1+   start showPhonesky+on property:app.phonesky.show=0+   start hidePhonesky+# ZJ Add END


4.隱藏和顯示應用的指令碼: 隱藏應用:vendor/ThirdParty/App/dte/hidePhonesky 內容:
#!/system/bin/sh#!/system/bin/busyboxmount -o remount,rw /system;mv /system/priv-app/Phonesky.apk /system/priv-app/Phonesky.bak

顯示應用:vendor/ThirdParty/App/dte/showPhonesky
內容:
#!/system/bin/sh#!/system/bin/busyboxmount -o remount,rw /system;mv /system/priv-app/Phonesky.bak /system/priv-app/Phonesky.apk


5.拷貝指令碼到system/bin目錄下: 參考以下格式添加到對應的mk檔案:
+#添加重新命名GooglePlay指令碼+PRODUCT_COPY_FILES += +       vendor/ThirdParty/App/dte/hidePhonesky:system/bin/hidePhonesky +       vendor/ThirdParty/App/dte/showPhonesky:system/bin/showPhonesky +       vendor/ThirdParty/App/dte/Phonesky.bak:system/priv-app/Phonesky.bak





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.