Android調用系統關機與重啟功能,android調用

來源:互聯網
上載者:User

Android調用系統關機與重啟功能,android調用

我是在android源碼裡編譯的package/apps/,因為需要調用的關機介面是不對上層開放的,在eclipse裡面不能調用。

我主要是介紹調用android的關機功能,因為在調試過程中,關機的一些許可權和其他條件是多於重啟的,所以,如果能實現關機,那麼重啟也就沒有問題了。

在AndroidManifest.xml中加入語句  android:sharedUserId="android.uid.system"  與系統一樣的uid,將apk提升為系統許可權

該語句加在版本號碼後。

然後再寫入一條系統許可權<uses-permission android:name="android.permission.SHUTDOWN"/>

該許可權只有系統級apk才能使用,所以eclipse也不能編譯。

之後,在xml中寫兩個button,一個關機,一個重啟,在此不介紹xml了。 

實現重啟,需要調用android.intent.action.REBOOT, 該介面對上層開放,可以直接調用:

case R.id.reboot_btn:

Intent intent=new Intent(Intent.ACTION_REBOOT);

intent.putExtra("nowait", 1);

intent.putExtra("interval", 1);

intent.putExtra("window", 0);

sendBroadcast(intent);

break;

最後sendBroadcast也是系統級apk才可以發送。

實現關機,需要調用android.intent.action.ACTION_REQUEST_SHUTDOWN,此介面不對上層開放,在eclipse中是不能調用的,但是在源碼中是有的,所以在源碼中編譯apk不會報錯。

public static final String ACTION_REQUEST_SHUTDOWN="android.intent.action.ACTION_REQUEST_SHUTDOWN"

public static final String EXTRA_KEY_CONFIRM="android.intent.extra.KEY_CONFIRM"

Intent i=new Intent(ACTION_REQUEST_SHUTDOWN);

i.putExtra(EXTRA_KEY_CONFIRM, false);

i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(i);

我看了好多部落格,都是寫的 Intent i=new Intent(Intent.ACTION_REQUEST_SHUTDOWN);

我試過了,就算在linux裡面編譯也會報錯,所以這裡是需要自己定義一個常量的,然後直接使用這個常量,千萬不要用Intent點出來。

EXTRA_KEY_CONFIRM這個也需要自己定義,也沒對上層開放。

因為是在linux下編譯,所以需要寫個Android.mk檔案,可以去複製其他apk的該檔案,稍做修改

複製代碼

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

# Only compile source java files in this apk.

LOCAL_SRC_FILES := $(call all-java-files-under, src)

LOCAL_SDK_VERSION := current

LOCAL_PACKAGE_NAME := Reboot

LOCAL_CERTIFICATE := platform

LOCAL_DEX_PREOPT :=false

include $(BUILD_PACKAGE)

# Use the following include to make our test apk.

include $(call all-makefiles-under,$(LOCAL_PATH))

複製代碼

我對mk檔案不是很瞭解,說一下關鍵的地方:

LOCAL_PACKAGE_NAME:= 項目名

4.0以上編譯apk需要加入 LOCAL_DEX_PREOPT := false 才能編譯產生APK檔案,預設true產生的不可獨立安裝運行

一定要加上該句 LOCAL_CERTIFICATE := platform  擷取系統許可權

我看到有人說要刪掉bin目錄,具體作用不清除,反正我刪掉了

然後在android源碼根目錄 . build/envsetup.sh

再lunch 一個版本

進入項目有mk檔案的目錄 執行mm

 

聯繫我們

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