Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 如何使Android應用程序獲取系統權限 M

Android 如何使Android應用程序獲取系統權限 M

編輯:關於Android編程

正文       在 android 的API中有提供 SystemClock.setCurrentTimeMillis()函數來修改系統時間,可惜無論你怎麼調用這個函數都是沒用的,無論模擬器還是真機,在logcat中總會得到"Unable to open alarm driver: Permission denied ".這個函數需要signatureOrSystem等級的permission才能使用。有兩種方法可以處理,來得到系統權限。 第一個方法直接修改編譯,需要在Android系統源碼的環境下用make來編譯:    1. 在應用程序的AndroidManifest.xml中的manifest節點中加入android:sharedUserId="android.uid.system"這個屬性。    2.  修改它的Android.mk文件,加入LOCAL_CERTIFICATE := platform這一行    3.  使用mm命令來編譯,生成的apk就有修改系統時間的權限了。 第二個方法使用系統簽名文件來處理: 1. 同上,和系統相同的uid. Android 的系統用戶id是android.uid.system , 在Manifest裡面添加android:sharedUserId="android.uid.system"。 2. 相同的系統簽名。包簽名需要用到android提供的signapk,但很遺憾,我們的開發包裡面並沒有,需要您手動的從源碼裡面編譯,在2.2的版本中,源碼路徑是:froyo\build\tools\signapk。 然後從源碼路徑froyo\build\target\product\security中取出兩個系統簽名文件platform.pk8 and platform.x509.pem.  就可以對eclipse編譯好的apk簽名了,(注: 編譯好的apk在bin目錄下)。 形式是: Java –jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk. 完成這兩部後,在運行之前,您還要從模擬器上卸載掉原來的相同程序,因為簽名改了,不然會報錯不能安裝。 對於在模擬器上進行setCurrentTimeMillis 雖然我們能夠修改模擬器的時間了,這個方法的返回值仍然是false, 可能是不能真正的修改系統的時鐘吧。在Log中的提示是: 08-16 08:29:24.307: WARN/SystemClock(125): Unable to set rtc to 1281918564: Invalid argument.  這個和android模擬器裡面自帶的setting裡面的修改時間Log提示錯誤是一樣的。
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved