將程式變成system app 實現home、back、menu等按鍵類比

來源:互聯網
上載者:User

標籤:按鍵類比   系統簽名   back   menu   

1.使一個程式成為系統程式

我們必須在manifest 中配置android:sharedUserId="android.uid.system"

<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.flyaudio.floatwindows"    android:versionCode="1"    android:sharedUserId="android.uid.system"     android:versionName="1.0" >
加上許可權:<uses-permission android:name="android.permission.INJECT_EVENTS" />

這個許可權就是為了允許一個程式截獲使用者事件如按鍵、觸摸、軌跡球等等到一個時間流。


2.類比home、back、menu

private void homePress(){Intent mHomeIntent = new Intent(Intent.ACTION_MAIN);        mHomeIntent.addCategory(Intent.CATEGORY_HOME);        mHomeIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK                | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);        getContext().startActivity(mHomeIntent);}private void backPress(){        Runtime runtime = Runtime.getRuntime();        try {runtime.exec("input keyevent " + KeyEvent.KEYCODE_BACK);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private void menuPress(){         Runtime runtime = Runtime.getRuntime();        try {runtime.exec("input keyevent " + KeyEvent.KEYCODE_MENU);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
其實還有一種方法就是:

new Thread(){   public void run() {    try{     Instrumentation inst = new Instrumentation();     inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);    }    catch (Exception e) {                 Log.e("Exception when onBack", e.toString());             }   }  }.start();
inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
這裡可以傳入任何鍵值。


3.添加系統簽名

完成上面2個步驟之後,安裝程式發現會出現Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]錯誤。因為使用eclipse編譯後的程式不帶有platform簽名,所以作為系統程式安裝不了。

所以需要對apk進行簽名

    將簽名工具(signapk.jar)、簽署憑證(platform.pk8和platform.x509.pem)及編譯出來的apk檔案都放到同一目錄

    終端進入該目錄執行java -jar signapk.jar -w platform.x509.pem platform.pk8 XXX.apk out/XXX.apk

    拿出out目錄下被簽名後的apk進行安裝


4.附上籤名工具

   裡面有2種簽名shared和platform

下載簽名工具


將程式變成system app 實現home、back、menu等按鍵類比

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.