首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android Contacts 擁有 CALL_PRIVILEGED 權限仍報 SecurityException 的解決

     編輯:程式設計綜合問答

問題現象

修改系統 Contacts 應用,已在 Manifest 宣告 android.permission.CALL_PRIVILEGED,執行撥號仍拋出 SecurityException: Permission Denial,提示需要該權限。

根本原因

CALL_PRIVILEGED 為 簽名權限,僅授予與系統相同簽名的應用。自行編譯的 Contacts 若未使用系統平台簽名,系統不會授予該權限。

解決流程

  1. 使用 系統平台簽名(platform.x509.pem + platform.pk8)對修改後的 Contacts APK 簽名。
  2. 將簽名後的 APK 推送至 /system/app/Contacts/ 或 /system/priv-app/Contacts/。
  3. 重啟裝置,若權限仍未生效,需 Wipe Data(恢復出廠設定)重建權限快取。

關鍵指令

# 簽名範例
java -jar signapk.jar platform.x509.pem platform.pk8 Contacts.apk Contacts_signed.apk

# 推送
adb root
adb remount
adb push Contacts_signed.apk /system/priv-app/Contacts/Contacts.apk
adb shell chmod 644 /system/priv-app/Contacts/Contacts.apk
adb reboot

注意事項

  • 僅限自製 ROM 或具 Root 權限的開發機測試。
  • 正式發布應用不可使用簽名權限,應改用 ACTION_DIAL 或申請 CALL_PHONE 並引導用戶授權。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved