導航:首頁 > 操作系統 > android許可權

android許可權

發布時間:2022-01-20 21:11:24

android有哪些"許可權"

Android是在linux內核上建立一個硬體抽象層(Android HAL),通過Dalvik以及各種庫來執行android應用的。在手機啟動時,首先需要由Bootloader(HTC手機上稱作Hboot)引導Linux及手機上各個硬體設備的驅動程序,之後才啟動Android系統。所以其實我們會涉及到四種不同涵義的許可權:
Android許可權(Permission)
這指Android中的一系列"Android.Permission.*"對象,是本文的中心內容。
Google在Android框架內把各種對象(包括設備上的各類數據,感測器,撥打電話,發送信息,控制別的應用程序等)的訪問許可權進行了詳細的劃分,列出了約一百條"Android.Permission"。應用程序在運行前必須向Android系統聲明它將會用到的許可權,否則Android將會拒絕該應用程序訪問通過該"Permission"許可的內容。
比方說,搜狗輸入法提供了一個智能通訊錄的功能,用戶可以在輸入聯系人拼音的前幾個字元,或首字母,輸入法就能自動呈現相關聯系人的名字。為了實現這個功能,輸入法必須聲明它需要讀取手機中聯系人的能力,也就是在相關代碼中加上聲明"android.permission.READ_CONTACTS"對象。
圖5 搜狗輸入法的智能聯系人功能
原生Android只提供了對"一刀切"式的管理,要麼同意使用,否則就根本就不安裝應用程序。當用戶遇到希望使用程序的同時,又想禁止部分Permission的場合,他就無路可走。
於是,不少開發者就搗鼓出了"第三條道路";可惜的是,沒有一種方法能同時做到既不需要將手機固件Root,又完全不涉及對原始應用程序進行反向工程的方法。
RootRoot指獲得Android所在的Linux系統的Root(根)許可權,有了根許可權,你才能對Linux做出任意的修改。iOS中的越獄(Jailbreak) 相當於獲得iOS系統的Root許可權(iOS是一種類Unix系統,和Linux都使用Root的概念)。在已Root的設備中,通常都是使用一個叫"Superuser"(簡稱SU)的應用程序來向許可的程序授以Root許可權。
Bootloader的解鎖(Unlock)
利用數字簽名,Bootloader可以限定只有正確簽名的系統可以被引導。在修改固件以獲得Root以前,解鎖Bootloader通常是必須的。安裝第三方修改、編譯的固件也需要解鎖Bootloader。
基帶(Radio)解鎖
在Android系統中,基帶是上層軟體與手機中無線設備(手機網路,Wi-Fi,藍牙等)的驅動程序之間的中介。國外的網路運營商很喜歡鎖定基帶,從而保證用戶只能使用運營商自己指定的sim卡。在我國,鎖定基帶是非法的,手機製造商、網路運營商也不可以通過鎖定基帶的方法對待違約客戶。iOS的"解鎖"就是解鎖iOS中的基帶軟體。
魚和熊掌不可兼得,Android的世界有很多自由,壞人也能自由地做壞事。它的生態系統很強調自主:用戶可以自主地減小風險,僅使用官方市場的應用程序,也可以自主地解除安全限制,從而獲得更多自由。因此,在遇到壞事的時候,用戶也不得不自主一下:
1, 抵制不道德,乃至非法行為
幾乎所有的Android安全軟體都能對來電、信息進行控制,以減少騷擾。
另一方面,很多應用都會要求它們實際功能以外的許可權,表現在非(主動)告知地搜集設備序列號,位置信息,誘使用戶默認地上傳聯系人列表等方面。
更壞一點的應用程序,則會踏入犯罪的范疇,比如能偷偷發出扣費信息,或是作為黑客的偷窺工具。
2, 減少惡意軟體的損害
惡意軟體即便潛伏成功,也難以獲得許可權,從而減少損失。
3, 用戶有權自主地在抑制應用程序的部分許可權時,繼續使用該應用程序,而只承擔由於自行設置不當而帶來的後果。
用戶擁有設備的所有權,因此有權自主控制設備上的內容、感測器等對象的訪問;同時有權(不)運行,(不)編譯設備上的應用程序。
大多數應用程序在運行時,並未達成主動告知的義務,是失誤;然而即使主動告知,用戶還是可以不理會。
通過Android官方市場,"打包安裝器"安裝應用程序時,所顯示的"許可權"僅是在安裝包內AndroidManifest.xml聲明的值,而非應用程序實際上會調用的內容。該值僅用來表明Android系統能向應用授予的最大可能的許可權。即便一個"Hello World"式的應用程序,也可以在AndroidManifest.xml中聲明所有可能的Android Permission。
這就是說,在AndroidManifest.xml中聲明的值與應用程序實際調用的許可權有關聯,但不等同,且這種提示是由Android系統負責實施的強制行為。
正確的理解是:"應用程序(被迫地)讓Android系統告知用戶,它在AndroidManifest.xml中所聲明的事項。"
這意味著應用程序在使用重要許可權前,依然需要自行、主動地通知用戶相關事宜。

⑵ 安卓開源Android_permission訪問許可權

android.permission.ACCESS_NETWORK_STATE允許程序訪問有關GSM網路信息(Allowsapplications to access information about networks)

android.permission.ACCESS_WIFI_STATE允許程序訪問Wi-Fi網路狀態信息(Allowsapplications to access information about Wi-Fi networks)

android.permission.BLUETOOTH允許程序連接到已配對的藍牙設備(Allowsapplications to connect to paired bluetooth devices)

android.permission.BLUETOOTH_ADMIN允許程序發現和配對藍牙設備(Allowsapplicationsto discover and pair bluetooth devices)

android.permission.CHANGE_WIFI_STATE允許程序改變Wi-Fi連接狀態(Allowsapplications to change Wi-Fi connectivity state)

android.permission.DEVICE_POWER允許訪問底層電源管理(Allowslow-level access to power management)

android.permission.DISABLE_KEYGUARD允許程序禁用鍵盤鎖(Allowsapplications to disable the keyguard )

android.permission.EXPAND_STATUS_BAR允許一個程序擴展收縮在狀態欄,Android開發網提示應該是一個類似WindowsMobile中的托盤程序(Allows an application to expand or collapse the status bar.)

android.permission.GET_DETAILED_TASKS 檢索正在運行的應用的詳細信息,惡意程序可藉此獲得其他應用的私密信息

android.permission.GET_TASKS 檢索正在運行的應用,可用於了解當前設備上使用了哪些應用

android.permission.INJECT_EVENTS 將自身的輸入事件(例如按鍵)提供給其他應用,惡意程序可堅持控制手機

android.permission.INTERNAL_SYSTEM_WINDOW 允許創建未授權的內部系統窗口,普通應用絕不應該使用此許可權

android.permission.MANAGE_APP_TOKENS 創建和管理令牌,普通應用絕不應該使用此許可權

android.permission.MASTER_CLEAR 恢復出廠設置

android.permission.MANAGE_NETWORK_POLICY

android.permission.MANAGE_USB

android.permission.MOUNT_UNMOUNT_FILESYSTEMS允許掛載和反掛載文件系統可移動存儲(Allowsmounting and unmounting file systems for removable storage. )

android.permission.RECEIVE_BOOT_COMPLETED允許一個程序接收到 ACTION_BOOT_COMPLETED廣播在系統完成啟動(Allowsan application to receive the ACTION_BOOT_COMPLETED that is broadcast after thesystem finishes booting. )

android.permission.REORDER_TASKS允許程序改變Z軸排列任務(Allowsan application to change the Z-order of tasks)

android.permission.READ_PHONE_STATE 讀取手機的狀態和身份,可以確定手機的號碼/序列號/是否處於通話狀態/被叫號碼

android.permission.READ_FRAME_BUFFER 讀取幀緩沖區的內容

android.permission.REMOVE_TASKS 停止正在運行的進程,惡意程序可以藉此停止其他程序的運行

android.permission.READ_EXTERNAL_STORAGE

android.permission.REMOTE_AUDIO_PLAYBACK

android.permission.START_ANY_ACTIVITY 允許應用啟動任何活動(不考慮許可權保護和導出狀態)

android.permission.SYSTEM_ALERT_WINDOW 在其他應用之上或用戶界面的特定部分繪圖,可能會干擾對用戶界面的使用,或者使其他應用中看到的內容發生變化

android.permission.SET_ORIENTATION允許底層訪問設置屏幕方向和實際旋轉(Allowslow-level access to setting the orientation (actually rotation) of the screen.)

android.permission.STATUS_BAR允許程序打開、關閉或禁用狀態欄及圖標Allows an application to open, close, or disable the statusbar and its icons.

android.permission.SET_SCREEN_COMPATIBILITY 允許控制其他應用的屏幕兼容模式,惡意程序可以藉此影響其他應用的行為

android.permission.START_ANY_ACTIVITY 允許應用啟動任何活動(不考慮許可權保護和導出狀態)
android.permission.STOP_APP_SWITCHES讓應用程序始終運行

android.permission.STATUS_BAR_SEBVICE

android.permission.SHELL

android.permission.UPDATE_DEVICE_STATS 允許應用修改電池的統計信息,普通應用絕不應該使用此許可權

android.permission. VIBRATE控制振動器

android.permission.WRITE_EXTERNAL_STORAGE 允許寫入或刪除SD卡

android.permission.WRITE_SETTINGS 修改系統設置,惡意程序可以藉此破壞系統

android.permission.WAKE_LOCK 阻止手機進入休眠狀態

⑶ android應用怎麼獲取系統許可權

對於一般的Android應用開發來說是不需要用到系統許可權的,但是在某些特殊情況下調用一些API是需要系統許可權的譬如設置系統的時間SystemClock.setCurrentTimeMillis()函數來修改系統時間。下面介紹的這兩種方法是可以獲取到系統許可權的。
http://blog.csdn.net/tkwxty/article/details/41018553

⑷ android應用系統許可權問題

/**
* 廣播接收者. 去申請管理員許可權. 這個廣播接收者需要在清單文件中做一些特殊的配置
*
* <receiver android:name=".MyPolicyReceiver" 你的廣播接收者的名字
* android:description="@string/app_name" 給用戶的描述
* android:label="@string/app_name" 設備管理器中顯示的應用標題名
* android:permission="android.permission.BIND_DEVICE_ADMIN"> 需要申請的許可權
* <meta-data
* android:name="android.app.device_admin"
* android:resource="@xml/policy"/> policy.xml中為所聲明的設備管理員許可權
*
* <intent-filter >
* <action
* android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 監聽改頻段的廣播
* </intent-filter>
* </receiver>
*
* @author
*

⑸ android文件許可權是怎麼管理的

訪問登記屬性
android.permission.ACCESS_CHECKIN_PROPERTIES ,讀取或寫入登記check-in資料庫屬性表的許可權

獲取錯略位置
android.permission.ACCESS_COARSE_LOCATION,通過WiFi或移動基站的方式獲取用戶錯略的經緯度信息,定位精度大概誤差在30~1500米

獲取精確位置
android.permission.ACCESS_FINE_LOCATION,通過GPS晶元接收衛星的定位信息,定位精度達10米以內

訪問定位額外命令
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS,允許程序訪問額外的定位提供者指令

獲取模擬定位信息
android.permission.ACCESS_MOCK_LOCATION,獲取模擬定位信息,一般用於幫助開發者調試應用

獲取網路狀態
android.permission.ACCESS_NETWORK_STATE,獲取網路信息狀態,如當前的網路連接是否有效

訪問Surface Flinger
android.permission.ACCESS_SURFACE_FLINGER,Android平台上底層的圖形顯示支持,一般用於游戲或照相機預覽界面和底層模式的屏幕截圖

獲取WiFi狀態
android.permission.ACCESS_WIFI_STATE,獲取當前WiFi接入的狀態以及WLAN熱點的信息

賬戶管理
android.permission.ACCOUNT_MANAGER,獲取賬戶驗證信息,主要為GMail賬戶信息,只有系統級進程才能訪問的許可權

驗證賬戶
android.permission.AUTHENTICATE_ACCOUNTS,允許一個程序通過賬戶驗證方式訪問賬戶管理ACCOUNT_MANAGER相關信息

電量統計
android.permission.BATTERY_STATS,獲取電池電量統計信息

綁定小插件
android.permission.BIND_APPWIDGET,允許一個程序告訴appWidget服務需要訪問小插件的資料庫,只有非常少的應用才用到此許可權

綁定設備管理
android.permission.BIND_DEVICE_ADMIN,請求系統管理員接收者receiver,只有系統才能使用

綁定輸入法
android.permission.BIND_INPUT_METHOD ,請求InputMethodService服務,只有系統才能使用

綁定RemoteView
android.permission.BIND_REMOTEVIEWS,必須通過RemoteViewsService服務來請求,只有系統才能用

綁定壁紙
android.permission.BIND_WALLPAPER,必須通過WallpaperService服務來請求,只有系統才能用

使用藍牙
android.permission.BLUETOOTH,允許程序連接配對過的藍牙設備

藍牙管理
android.permission.BLUETOOTH_ADMIN,允許程序進行發現和配對新的藍牙設備

變成磚頭
android.permission.BRICK,能夠禁用手機,非常危險,顧名思義就是讓手機變成磚頭

應用刪除時廣播
android.permission.BROADCAST_PACKAGE_REMOVED,當一個應用在刪除時觸發一個廣播

收到簡訊時廣播
android.permission.BROADCAST_SMS,當收到簡訊時觸發一個廣播

連續廣播
android.permission.BROADCAST_STICKY,允許一個程序收到廣播後快速收到下一個廣播

WAP PUSH廣播
android.permission.BROADCAST_WAP_PUSH,WAP PUSH服務收到後觸發一個廣播

撥打電話
android.permission.CALL_PHONE,允許程序從非系統撥號器里輸入電話號碼

通話許可權
android.permission.CALL_PRIVILEGED,允許程序撥打電話,替換系統的撥號器界面

拍照許可權
android.permission.CAMERA,允許訪問攝像頭進行拍照

改變組件狀態
android.permission.CHANGE_COMPONENT_ENABLED_STATE,改變組件是否啟用狀態

改變配置
android.permission.CHANGE_CONFIGURATION,允許當前應用改變配置,如定位

改變網路狀態
android.permission.CHANGE_NETWORK_STATE,改變網路狀態如是否能聯網

改變WiFi多播狀態
android.permission.CHANGE_WIFI_MULTICAST_STATE,改變WiFi多播狀態

改變WiFi狀態
android.permission.CHANGE_WIFI_STATE,改變WiFi狀態

清除應用緩存
android.permission.CLEAR_APP_CACHE,清除應用緩存

清除用戶數據
android.permission.CLEAR_APP_USER_DATA,清除應用的用戶數據

底層訪問許可權
android.permission.CWJ_GROUP,允許CWJ賬戶組訪問底層信息

手機優化大師擴展許可權
android.permission.CELL_PHONE_MASTER_EX,手機優化大師擴展許可權

控制定位更新
android.permission.CONTROL_LOCATION_UPDATES,允許獲得移動網路定位信息改變

刪除緩存文件
android.permission.DELETE_CACHE_FILES,允許應用刪除緩存文件

刪除應用
android.permission.DELETE_PACKAGES,允許程序刪除應用

電源管理
android.permission.DEVICE_POWER,允許訪問底層電源管理

應用診斷
android.permission.DIAGNOSTIC,允許程序到RW到診斷資源

禁用鍵盤鎖
android.permission.DISABLE_KEYGUARD,允許程序禁用鍵盤鎖

轉存系統信息
android.permission.DUMP,允許程序獲取系統mp信息從系統服務

狀態欄控制
android.permission.EXPAND_STATUS_BAR,允許程序擴展或收縮狀態欄

工廠測試模式
android.permission.FACTORY_TEST,允許程序運行工廠測試模式

使用閃光燈
android.permission.FLASHLIGHT,允許訪問閃光燈

強制後退
android.permission.FORCE_BACK,允許程序強制使用back後退按鍵,無論Activity是否在頂層

訪問賬戶Gmail列表
android.permission.GET_ACCOUNTS,訪問GMail賬戶列表

獲取應用大小
android.permission.GET_PACKAGE_SIZE,獲取應用的文件大小

獲取任務信息
android.permission.GET_TASKS,允許程序獲取當前或最近運行的應用

允許全局搜索
android.permission.GLOBAL_SEARCH,允許程序使用全局搜索功能

硬體測試
android.permission.HARDWARE_TEST,訪問硬體輔助設備,用於硬體測試

注射事件
android.permission.INJECT_EVENTS,允許訪問本程序的底層事件,獲取按鍵、軌跡球的事件流

安裝定位提供
android.permission.INSTALL_LOCATION_PROVIDER,安裝定位提供

安裝應用程序
android.permission.INSTALL_PACKAGES,允許程序安裝應用

內部系統窗口
android.permission.INTERNAL_SYSTEM_WINDOW,允許程序打開內部窗口,不對第三方應用程序開放此許可權

訪問網路
android.permission.INTERNET,訪問網路連接,可能產生GPRS流量

結束後台進程
android.permission.KILL_BACKGROUND_PROCESSES,允許程序調用killBackgroundProcesses(String).方法結束後台進程

管理賬戶
android.permission.MANAGE_ACCOUNTS,允許程序管理AccountManager中的賬戶列表

管理程序引用
android.permission.MANAGE_APP_TOKENS,管理創建、摧毀、Z軸順序,僅用於系統

高級許可權
android.permission.MTWEAK_USER,允許mTweak用戶訪問高級系統許可權

社區許可權
android.permission.MTWEAK_FORUM,允許使用mTweak社區許可權

軟格式化
android.permission.MASTER_CLEAR,允許程序執行軟格式化,刪除系統配置信息

修改聲音設置
android.permission.MODIFY_AUDIO_SETTINGS,修改聲音設置信息

修改電話狀態
android.permission.MODIFY_PHONE_STATE,修改電話狀態,如飛行模式,但不包含替換系統撥號器界面

格式化文件系統
android.permission.MOUNT_FORMAT_FILESYSTEMS,格式化可移動文件系統,比如格式化清空SD卡

掛載文件系統
android.permission.MOUNT_UNMOUNT_FILESYSTEMS,掛載、反掛載外部文件系統

允許NFC通訊
android.permission.NFC,允許程序執行NFC近距離通訊操作,用於移動支持

永久Activity
android.permission.PERSISTENT_ACTIVITY,創建一個永久的Activity,該功能標記為將來將被移除

處理撥出電話
android.permission.PROCESS_OUTGOING_CALLS,允許程序監視,修改或放棄播出電話

讀取日程提醒
android.permission.READ_CALENDAR,允許程序讀取用戶的日程信息

讀取聯系人
android.permission.READ_CONTACTS,允許應用訪問聯系人通訊錄信息

屏幕截圖
android.permission.READ_FRAME_BUFFER,讀取幀緩存用於屏幕截圖

讀取收藏夾和歷史記錄
com.android.browser.permission.READ_HISTORY_BOOKMARKS,讀取瀏覽器收藏夾和歷史記錄

讀取輸入狀態
android.permission.READ_INPUT_STATE,讀取當前鍵的輸入狀態,僅用於系統

讀取系統日誌
android.permission.READ_LOGS,讀取系統底層日誌

讀取電話狀態
android.permission.READ_PHONE_STATE,訪問電話狀態

讀取簡訊內容
android.permission.READ_SMS,讀取簡訊內容

讀取同步設置
android.permission.READ_SYNC_SETTINGS,讀取同步設置,讀取Google在線同步設置

讀取同步狀態
android.permission.READ_SYNC_STATS,讀取同步狀態,獲得Google在線同步狀態

重啟設備
android.permission.REBOOT,允許程序重新啟動設備

開機自動允許
android.permission.RECEIVE_BOOT_COMPLETED,允許程序開機自動運行

接收彩信
android.permission.RECEIVE_MMS,接收彩信

接收簡訊
android.permission.RECEIVE_SMS,接收簡訊

接收Wap Push
android.permission.RECEIVE_WAP_PUSH,接收WAP PUSH信息

錄音
android.permission.RECORD_AUDIO,錄制聲音通過手機或耳機的麥克

排序系統任務
android.permission.REORDER_TASKS,重新排序系統Z軸運行中的任務

結束系統任務
android.permission.RESTART_PACKAGES,結束任務通過restartPackage(String)方法,該方式將在外來放棄

發送簡訊
android.permission.SEND_SMS,發送簡訊

設置Activity觀察其
android.permission.SET_ACTIVITY_WATCHER,設置Activity觀察器一般用於monkey測試

設置鬧鈴提醒
com.android.alarm.permission.SET_ALARM,設置鬧鈴提醒

設置總是退出
android.permission.SET_ALWAYS_FINISH,設置程序在後台是否總是退出

設置動畫縮放
android.permission.SET_ANIMATION_SCALE,設置全局動畫縮放

設置調試程序
android.permission.SET_DEBUG_APP,設置調試程序,一般用於開發

設置屏幕方向
android.permission.SET_ORIENTATION,設置屏幕方向為橫屏或標准方式顯示,不用於普通應用

設置應用參數
android.permission.SET_PREFERRED_APPLICATIONS,設置應用的參數,已不再工作具體查看addPackageToPreferred(String) 介紹

設置進程限制
android.permission.SET_PROCESS_LIMIT,允許程序設置最大的進程數量的限制

設置系統時間
android.permission.SET_TIME,設置系統時間

設置系統時區
android.permission.SET_TIME_ZONE,設置系統時區

設置桌面壁紙
android.permission.SET_WALLPAPER,設置桌面壁紙

設置壁紙建議
android.permission.SET_WALLPAPER_HINTS,設置壁紙建議

發送永久進程信號
android.permission.SIGNAL_PERSISTENT_PROCESSES,發送一個永久的進程信號

狀態欄控制
android.permission.STATUS_BAR,允許程序打開、關閉、禁用狀態欄

訪問訂閱內容
android.permission.SUBSCRIBED_FEEDS_READ,訪問訂閱信息的資料庫

寫入訂閱內容
android.permission.SUBSCRIBED_FEEDS_WRITE,寫入或修改訂閱內容的資料庫

顯示系統窗口
android.permission.SYSTEM_ALERT_WINDOW,顯示系統窗口

更新設備狀態
android.permission.UPDATE_DEVICE_STATS,更新設備狀態

使用證書
android.permission.USE_CREDENTIALS,允許程序請求驗證從AccountManager

使用SIP視頻
android.permission.USE_SIP,允許程序使用SIP視頻服務

使用振動
android.permission.VIBRATE,允許振動

喚醒鎖定
android.permission.WAKE_LOCK,允許程序在手機屏幕關閉後後台進程仍然運行

寫入GPRS接入點設置
android.permission.WRITE_APN_SETTINGS,寫入網路GPRS接入點設置

寫入日程提醒
android.permission.WRITE_CALENDAR,寫入日程,但不可讀取

寫入聯系人
android.permission.WRITE_CONTACTS,寫入聯系人,但不可讀取

寫入外部存儲
android.permission.WRITE_EXTERNAL_STORAGE,允許程序寫入外部存儲,如SD卡上寫文件

寫入Google地圖數據
android.permission.WRITE_GSERVICES,允許程序寫入Google Map服務數據

寫入收藏夾和歷史記錄
com.android.browser.permission.WRITE_HISTORY_BOOKMARKS,寫入瀏覽器歷史記錄或收藏夾,但不可讀取

讀寫系統敏感設置
android.permission.WRITE_SECURE_SETTINGS,允許程序讀寫系統安全敏感的設置項

讀寫系統設置
android.permission.WRITE_SETTINGS,允許讀寫系統設置項

編寫簡訊
android.permission.WRITE_SMS,允許編寫簡訊

寫入在線同步設置
android.permission.WRITE_SYNC_SETTINGS,寫入Google在線同步設置

⑹ android判斷應用是否有某個許可權

可以使用以下方法:
1、判斷應用是否具有某個許可權
PackageManager pm = getPackageManager();
boolean permission = (PackageManager.PERMISSION_GRANTED ==
pm.checkPermission("android.permission.RECORD_AUDIO", "packageName"));
if (permission) {
showToast("有這個許可權");
}else {
showToast("木有這個許可權");
}
2、獲取某個應用的許可權清單
PackageInfo pack = pm.getPackageInfo("packageName",PackageManager.GET_PERMISSIONS);
String[] permissionStrings = pack.requestedPermissions;

⑺ Android如何獲得系統(system)許可權

Android中如何修改系統時間(應用程序獲得系統許可權)在android的API中有提供 SystemClock.setCurrentTimeMillis()函數來修改系統時間,可惜無論你怎麼調用這個函數都是沒用的,無論模擬器還是真機,在logcat中總會得到"Unable to open alarm driver: Permission denied ".這個函數需要root許可權或者運行與系統進程中才可以用。 本來以為就沒有辦法在應用程序這一層改系統時間了,後來在網上搜了好久,知道這個目的還是可以達到的。 第一個方法簡單點,不過需要在Android系統源碼的環境下用make來編譯: 1. 在應用程序的AndroidManifest.xml中的manifest節點中加入 android:sharedUserId="android.uid.system"這個屬性。 2. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform這一行 3. 使用mm命令來編譯,生成的apk就有修改系統時間的許可權了。 第二個辦法麻煩點,不過不用開虛擬機跑到源碼環境下用make來編譯: 1. 同上,加入android:sharedUserId="android.uid.system"這個屬性。 2. 使用eclipse編譯出apk文件,但是這個apk文件是不能用的。 3. 用壓縮軟體打開apk文件,刪掉META-INF目錄下的CERT.SF和CERT.RSA兩個文件。 4. 使用目標系統的platform密鑰來重新給apk文件簽名。這步比較麻煩, 首先找到密鑰文件,在我的Android源碼目錄中的位置 是"build argetproctsecurity",下面的platform.pk8和platform.x509.pem 兩個文件。 然後用Android提供的Signapk工具來簽名,signapk的源代碼是 在"build oolssignapk"下, 用法為"signapk platform.x509.pem platform.pk8 input.apk output.apk", 文件名最好使用絕對路徑防止找不到,也可以修改源代碼直接使用。 這樣最後得到的apk和第一個方法是一樣的。 最後解釋一下原理,首先加入android:sharedUserId="android.uid.system"這個屬性。通過Shared User id,擁有同一個User id的多個APK可以配置成運行在同一個進程中。那麼把程序的UID配成android.uid.system,也就是要讓程序運行在系統進程中,這樣就有許可權來修改系統時間了。 只是加入UID還不夠,如果這時候安裝APK的話發現無法安裝,提示簽名不符,原因是程序想要運行在系統進程中還要有目標系統的platform key,就是上面第二個方法提到的platform.pk8和platform.x509.pem兩個文件。用這兩個key簽名後apk才真正可以放入系統進程中。第一個方法中加入LOCAL_CERTIFICATE := platform其實就是用這兩個key來簽名。這也有一個問題,就是這樣生成的程序只有在原始的Android系統或者是自己編譯的系統中才可以用,因為這樣的系統才可以拿到 platform.pk8和platform.x509.pem兩個文件。要是別家公司做的Android上連安裝都安裝不了。試試原始的Android 中的key來簽名,程序在模擬器上運行OK,不過放到G3上安裝直接提示"Package ... has no signatures that match those in shared user android.uid.system",這樣也是保護了系統的安全。最最後還說下,這個android:sharedUserId屬性不只可以把apk放到系統進程中,也可以配置多個APK運行在一個進程中,這樣可以共享數據,應該會很有用的。

⑻ Android 的許可權管理是怎麼實現的

根據用戶的使用過程體驗,可以將 Android 涉及的許可權大致分為如下三類:

(1)Android 手機所有者許可權:自用戶購買 Android 手機後,用戶不需要輸入任何密碼,就具有安裝一般應用軟體、使用應用程序等的許可權;

(2)Android root 許可權:該許可權為 Android 系統的最高許可權,可以對所有系統中文件、數據進行任意操作。出廠時默認沒有該許可權,需要使用 z4Root 等軟體進行獲取,然而,並不鼓勵進行此操作,因為可能由此使用戶失去手機原廠保修的權益。同樣,如果將 Android 手機進行 root 許可權提升,則此後用戶不需要輸入任何密碼,都將能以 Android root 許可權來使用手機。

(3)Android 應用程序許可權:Android 提供了豐富的 SDK(Software development kit),開發人員可以根據其開發 Android 中的應用程序。而應用程序對 Android 系統資源的訪問需要有相應的訪問許可權,這個許可權就稱為 Android 應用程序許可權,它在應用程序設計時設定,在 Android 系統中初次安裝時即生效。值得注意的是:如果應用程序設計的許可權大於 Android 手機所有者許可權,則該應用程序無法運行。如:沒有獲取 Android root 許可權的手機無法運行 Root Explorer,因為運行該應用程序需要 Android root 許可權。


Android 系統許可權定義

Android 系統在 /system/core/private/android_filesystem_config.h 頭文件中對 Android 用戶 / 用戶組作了如下定義,且許可權均基於該用戶 / 用戶組設置。

在 Android 系統中,上述用戶 / 用戶組對文件的訪問遵循 Linux 系統的訪問控制原則,即根據長度為 10 個字元的許可權控制符來決定用戶 / 用戶組對文件的訪問許可權。該控制符的格式遵循下列規則:

第 1 個字元:表示一種特殊的文件類型。其中字元可為 d( 表示該文件是一個目錄 )、b( 表示該文件是一個系統設備,使用塊輸入 / 輸出與外界交互,通常為一個磁碟 )、c( 表示該文件是一個系統設備,使用連續的字元輸入 / 輸出與外界交互,如串口和聲音設備 ),「.」表示該文件是一個普通文件,沒有特殊屬性。

2 ~ 4 個字元:用來確定文件的用戶 (user) 許可權;

5 ~ 7 個字元:用來確定文件的組 (group) 許可權;

8 ~ 10 個字元:用來確定文件的其它用戶 (other user,既不是文件所有者,也不是組成員的用戶 ) 的許可權。

第 2、5、8 個字元是用來控制文件的讀許可權的,該位字元為 r 表示允許用戶、組成員或其它人可從該文件中讀取數據。短線「-」則表示不允許該成員讀取數據。

第 3、6、9 位的字元控制文件的寫許可權,該位若為 w 表示允許寫,若為「-」表示不允許寫。

第 4、7、10 位的字元用來控制文件的製造許可權,該位若為 x 表示允許執行,若為「-」表示不允許執行。

舉個例子,「drwxrwxr--2 rootroot40962 月 11 10:36 lu」表示的訪問控制許可權(黑色字體標明)為:因為 lu 的第 1 個位置的字元是 d,所以由此知道 lu 是一個目錄。第 2 至 4 位置上的屬性是 rwx,表示用戶 root 擁有許可權列表顯示 lu 中所有的文件、創建新文件或者刪除 lu 中現有的文件,或者將 lu 作為當前工作目錄。第 5 至 7 個位置上的許可權是 rwx,表示 root 組的成員擁有和 root 一樣的許可權。第 8 至 10 位上的許可權僅是 r--,表示不是 root 的用戶及不屬於 root 組的成員只有對 lu 目錄列表的許可權。這些用戶不能創建或者刪除 lu 中的文件、執行 junk 中的可執行文件,或者將 junk 作為他們的當前工作目錄。


Android 應用程序許可權申請

每個應用程序的 APK 包裡面都包含有一個 AndroidMainifest.xml 文件,該文件除了羅列應用程序運行時庫、運行依賴關系等之外,還會詳細地羅列出該應用程序所需的系統訪問。程序員在進行應用軟體開發時,需要通過設置該文件的 uses-permission 欄位來顯式地向 Android 系統申請訪問許可權。

⑼ android中的許可權各起什麼作用

描述不清楚啊,這是所有的許可權
---------------------
訪問登記屬性 android.permission.ACCESS_CHECKIN_PROPERTIES ,讀取或寫入登記check-in資料庫屬性表的許可權
獲取錯略位置 android.permission.ACCESS_COARSE_LOCATION,通過WiFi或移動基站的方式獲取用戶錯略的經緯度信息,定位精度大概誤差在30~1500米
獲取精確位置 android.permission.ACCESS_FINE_LOCATION,通過GPS晶元接收衛星的定位信息,定位精度達10米以內
訪問定位額外命令 android.permission.ACCESS_LOCATION_EXTRA_COMMANDS,允許程序訪問額外的定位提供者指令
獲取模擬定位信息 android.permission.ACCESS_MOCK_LOCATION,獲取模擬定位信息,一般用於幫助開發者調試應用
獲取網路狀態 android.permission.ACCESS_NETWORK_STATE,獲取網路信息狀態,如當前的網路連接是否有效
訪問Surface Flinger android.permission.ACCESS_SURFACE_FLINGER,Android平台上底層的圖形顯示支持,一般用於游戲或照相機預覽界面和底層模式的屏幕截圖
獲取WiFi狀態 android.permission.ACCESS_WIFI_STATE,獲取當前WiFi接入的狀態以及WLAN熱點的信息
賬戶管理 android.permission.ACCOUNT_MANAGER,獲取賬戶驗證信息,主要為GMail賬戶信息,只有系統級進程才能訪問的許可權
驗證賬戶 android.permission.AUTHENTICATE_ACCOUNTS,允許一個程序通過賬戶驗證方式訪問賬戶管理ACCOUNT_MANAGER相關信息
電量統計 android.permission.BATTERY_STATS,獲取電池電量統計信息
綁定小插件 android.permission.BIND_APPWIDGET,允許一個程序告訴appWidget服務需要訪問小插件的資料庫,只有非常少的應用才用到此許可權
綁定設備管理 android.permission.BIND_DEVICE_ADMIN,請求系統管理員接收者receiver,只有系統才能使用
綁定輸入法 android.permission.BIND_INPUT_METHOD ,請求InputMethodService服務,只有系統才能使用
綁定RemoteView android.permission.BIND_REMOTEVIEWS,必須通過RemoteViewsService服務來請求,只有系統才能用
綁定壁紙 android.permission.BIND_WALLPAPER,必須通過WallpaperService服務來請求,只有系統才能用
使用藍牙 android.permission.BLUETOOTH,允許程序連接配對過的藍牙設備
藍牙管理 android.permission.BLUETOOTH_ADMIN,允許程序進行發現和配對新的藍牙設備
變成磚頭 android.permission.BRICK,能夠禁用手機,非常危險,顧名思義就是讓手機變成磚頭
應用刪除時廣播 android.permission.BROADCAST_PACKAGE_REMOVED,當一個應用在刪除時觸發一個廣播
收到簡訊時廣播 android.permission.BROADCAST_SMS,當收到簡訊時觸發一個廣播
連續廣播 android.permission.BROADCAST_STICKY,允許一個程序收到廣播後快速收到下一個廣播
WAP PUSH廣播 android.permission.BROADCAST_WAP_PUSH,WAP PUSH服務收到後觸發一個廣播
撥打電話 android.permission.CALL_PHONE,允許程序從非系統撥號器里輸入電話號碼
通話許可權 android.permission.CALL_PRIVILEGED,允許程序撥打電話,替換系統的撥號器界面
拍照許可權 android.permission.CAMERA,允許訪問攝像頭進行拍照
改變組件狀態 android.permission.CHANGE_COMPONENT_ENABLED_STATE,改變組件是否啟用狀態
改變配置 android.permission.CHANGE_CONFIGURATION,允許當前應用改變配置,如定位
改變網路狀態 android.permission.CHANGE_NETWORK_STATE,改變網路狀態如是否能聯網
改變WiFi多播狀態 android.permission.CHANGE_WIFI_MULTICAST_STATE,改變WiFi多播狀態
改變WiFi狀態 android.permission.CHANGE_WIFI_STATE,改變WiFi狀態
清除應用緩存 android.permission.CLEAR_APP_CACHE,清除應用緩存
清除用戶數據 android.permission.CLEAR_APP_USER_DATA,清除應用的用戶數據
底層訪問許可權 android.permission.CWJ_GROUP,允許CWJ賬戶組訪問底層信息
手機優化大師擴展許可權 android.permission.CELL_PHONE_MASTER_EX,手機優化大師擴展許可權
控制定位更新 android.permission.CONTROL_LOCATION_UPDATES,允許獲得移動網路定位信息改變
刪除緩存文件 android.permission.DELETE_CACHE_FILES,允許應用刪除緩存文件
刪除應用 android.permission.DELETE_PACKAGES,允許程序刪除應用
電源管理 android.permission.DEVICE_POWER,允許訪問底層電源管理
應用診斷 android.permission.DIAGNOSTIC,允許程序到RW到診斷資源
禁用鍵盤鎖 android.permission.DISABLE_KEYGUARD,允許程序禁用鍵盤鎖
轉存系統信息 android.permission.DUMP,允許程序獲取系統mp信息從系統服務
狀態欄控制 android.permission.EXPAND_STATUS_BAR,允許程序擴展或收縮狀態欄
工廠測試模式 android.permission.FACTORY_TEST,允許程序運行工廠測試模式
使用閃光燈 android.permission.FLASHLIGHT,允許訪問閃光燈
強制後退 android.permission.FORCE_BACK,允許程序強制使用back後退按鍵,無論Activity是否在頂層
訪問賬戶Gmail列表 android.permission.GET_ACCOUNTS,訪問GMail賬戶列表
獲取應用大小 android.permission.GET_PACKAGE_SIZE,獲取應用的文件大小
獲取任務信息 android.permission.GET_TASKS,允許程序獲取當前或最近運行的應用
允許全局搜索 android.permission.GLOBAL_SEARCH,允許程序使用全局搜索功能
硬體測試 android.permission.HARDWARE_TEST,訪問硬體輔助設備,用於硬體測試
注射事件 android.permission.INJECT_EVENTS,允許訪問本程序的底層事件,獲取按鍵、軌跡球的事件流
安裝定位提供 android.permission.INSTALL_LOCATION_PROVIDER,安裝定位提供
安裝應用程序 android.permission.INSTALL_PACKAGES,允許程序安裝應用
內部系統窗口 android.permission.INTERNAL_SYSTEM_WINDOW,允許程序打開內部窗口,不對第三方應用程序開放此許可權
訪問網路 android.permission.INTERNET,訪問網路連接,可能產生GPRS流量
結束後台進程 android.permission.KILL_BACKGROUND_PROCESSES,允許程序調用killBackgroundProcesses(String).方法結束後台進程
管理賬戶 android.permission.MANAGE_ACCOUNTS,允許程序管理AccountManager中的賬戶列表
管理程序引用 android.permission.MANAGE_APP_TOKENS,管理創建、摧毀、Z軸順序,僅用於系統
高級許可權 android.permission.MTWEAK_USER,允許mTweak用戶訪問高級系統許可權
社區許可權 android.permission.MTWEAK_FORUM,允許使用mTweak社區許可權
軟格式化 android.permission.MASTER_CLEAR,允許程序執行軟格式化,刪除系統配置信息
修改聲音設置 android.permission.MODIFY_AUDIO_SETTINGS,修改聲音設置信息
修改電話狀態 android.permission.MODIFY_PHONE_STATE,修改電話狀態,如飛行模式,但不包含替換系統撥號器界面
格式化文件系統 android.permission.MOUNT_FORMAT_FILESYSTEMS,格式化可移動文件系統,比如格式化清空SD卡
掛載文件系統 android.permission.MOUNT_UNMOUNT_FILESYSTEMS,掛載、反掛載外部文件系統
允許NFC通訊 android.permission.NFC,允許程序執行NFC近距離通訊操作,用於移動支持
永久Activity android.permission.PERSISTENT_ACTIVITY,創建一個永久的Activity,該功能標記為將來將被移除
處理撥出電話 android.permission.PROCESS_OUTGOING_CALLS,允許程序監視,修改或放棄播出電話
讀取日程提醒 android.permission.READ_CALENDAR,允許程序讀取用戶的日程信息
讀取聯系人 android.permission.READ_CONTACTS,允許應用訪問聯系人通訊錄信息
屏幕截圖 android.permission.READ_FRAME_BUFFER,讀取幀緩存用於屏幕截圖
讀取收藏夾和歷史記錄 com.android.browser.permission.READ_HISTORY_BOOKMARKS,讀取瀏覽器收藏夾和歷史記錄
讀取輸入狀態 android.permission.READ_INPUT_STATE,讀取當前鍵的輸入狀態,僅用於系統
讀取系統日誌 android.permission.READ_LOGS,讀取系統底層日誌
讀取電話狀態 android.permission.READ_PHONE_STATE,訪問電話狀態
讀取簡訊內容 android.permission.READ_SMS,讀取簡訊內容
讀取同步設置 android.permission.READ_SYNC_SETTINGS,讀取同步設置,讀取Google在線同步設置
讀取同步狀態 android.permission.READ_SYNC_STATS,讀取同步狀態,獲得Google在線同步狀態
重啟設備 android.permission.REBOOT,允許程序重新啟動設備
開機自動允許 android.permission.RECEIVE_BOOT_COMPLETED,允許程序開機自動運行
接收彩信 android.permission.RECEIVE_MMS,接收彩信
接收簡訊 android.permission.RECEIVE_SMS,接收簡訊
接收Wap Push android.permission.RECEIVE_WAP_PUSH,接收WAP PUSH信息
錄音 android.permission.RECORD_AUDIO,錄制聲音通過手機或耳機的麥克
排序系統任務 android.permission.REORDER_TASKS,重新排序系統Z軸運行中的任務
結束系統任務 android.permission.RESTART_PACKAGES,結束任務通過restartPackage(String)方法,該方式將在外來放棄
發送簡訊 android.permission.SEND_SMS,發送簡訊
設置Activity觀察其 android.permission.SET_ACTIVITY_WATCHER,設置Activity觀察器一般用於monkey測試
設置鬧鈴提醒 com.android.alarm.permission.SET_ALARM,設置鬧鈴提醒
設置總是退出 android.permission.SET_ALWAYS_FINISH,設置程序在後台是否總是退出
設置動畫縮放 android.permission.SET_ANIMATION_SCALE,設置全局動畫縮放
設置調試程序 android.permission.SET_DEBUG_APP,設置調試程序,一般用於開發
設置屏幕方向 android.permission.SET_ORIENTATION,設置屏幕方向為橫屏或標准方式顯示,不用於普通應用
設置應用參數 android.permission.SET_PREFERRED_APPLICATIONS,設置應用的參數,已不再工作具體查看addPackageToPreferred(String) 介紹
設置進程限制 android.permission.SET_PROCESS_LIMIT,允許程序設置最大的進程數量的限制
設置系統時間 android.permission.SET_TIME,設置系統時間
設置系統時區 android.permission.SET_TIME_ZONE,設置系統時區
設置桌面壁紙 android.permission.SET_WALLPAPER,設置桌面壁紙
設置壁紙建議 android.permission.SET_WALLPAPER_HINTS,設置壁紙建議
發送永久進程信號 android.permission.SIGNAL_PERSISTENT_PROCESSES,發送一個永久的進程信號
狀態欄控制 android.permission.STATUS_BAR,允許程序打開、關閉、禁用狀態欄
訪問訂閱內容 android.permission.SUBSCRIBED_FEEDS_READ,訪問訂閱信息的資料庫
寫入訂閱內容 android.permission.SUBSCRIBED_FEEDS_WRITE,寫入或修改訂閱內容的資料庫
顯示系統窗口 android.permission.SYSTEM_ALERT_WINDOW,顯示系統窗口
更新設備狀態 android.permission.UPDATE_DEVICE_STATS,更新設備狀態
使用證書 android.permission.USE_CREDENTIALS,允許程序請求驗證從AccountManager
使用SIP視頻 android.permission.USE_SIP,允許程序使用SIP視頻服務
使用振動 android.permission.VIBRATE,允許振動
喚醒鎖定 android.permission.WAKE_LOCK,允許程序在手機屏幕關閉後後台進程仍然運行
寫入GPRS接入點設置 android.permission.WRITE_APN_SETTINGS,寫入網路GPRS接入點設置
寫入日程提醒 android.permission.WRITE_CALENDAR,寫入日程,但不可讀取
寫入聯系人 android.permission.WRITE_CONTACTS,寫入聯系人,但不可讀取
寫入外部存儲 android.permission.WRITE_EXTERNAL_STORAGE,允許程序寫入外部存儲,如SD卡上寫文件
寫入Google地圖數據 android.permission.WRITE_GSERVICES,允許程序寫入Google Map服務數據
寫入收藏夾和歷史記錄 com.android.browser.permission.WRITE_HISTORY_BOOKMARKS,寫入瀏覽器歷史記錄或收藏夾,但不可讀取
讀寫系統敏感設置 android.permission.WRITE_SECURE_SETTINGS,允許程序讀寫系統安全敏感的設置項
讀寫系統設置 android.permission.WRITE_SETTINGS,允許讀寫系統設置項
編寫簡訊 android.permission.WRITE_SMS,允許編寫簡訊
寫入在線同步設置 android.permission.WRITE_SYNC_SETTINGS,寫入Google在線同步設置

⑽ Android的許可權都有哪些

(一)linux文件系統上的許可權
-rwxr-x--x system system 4156 2010-04-30 16:13 test.apk
代表的是相應的用戶/用戶組及其他人對此文件的訪問許可權,與此文件運行起來具有的許可權完全不相關。
比如上面的例子只能說明system用戶擁有對此文件的讀寫執行許可權;system組的用戶對此文件擁有讀、執行許可權;其他人對此文件只具有執行許可權。
而test.apk運行起來後可以干哪些事情,跟這個就不相關了。
千萬不要看apk文件系統上屬於system/system用戶及用戶組,或者root/root用戶及用戶組,就認為apk具有system或root許可權
(二)Android的許可權規則
(1)Android中的apk必須簽名
這種簽名不是基於權威證書的,不會決定某個應用允不允許安裝,而是一種自簽名證書。
重要的是,android系統有的許可權是基於簽名的。比如:system等級的許可權有專門對應的簽名,簽名不對,許可權也就獲取不到。
默認生成的APK文件是debug簽名的。
獲取system許可權時用到的簽名,見:如何使Android應用程序獲取系統許可權
(2)基於UserID的進程級別的安全機制
大家都知道,進程有獨立的地址空間,進程與進程間默認是不能互相訪問的,是一種很可靠的保護機制。
Android通過為每一個安裝在設備上的包(apk)分配唯一的linux userID來實現,名稱為"app_"加一個數字,比如app_43
不同的UserID,運行在不同的進程,所以apk之間默認便不能相互訪問。
Android提供了如下的一種機制,可以使兩個apk打破前面講的這種壁壘。
在AndroidManifest.xml中利用sharedUserId屬性給不同的package分配相同的userID,通過這樣做,兩個package可以被當做同一個程序,
系統會分配給兩個程序相同的UserID。當然,基於安全考慮,兩個package需要有相同的簽名,否則沒有驗證也就沒有意義了。
(這里補充一點:並不是說分配了同樣的UserID,兩程序就運行在同一進程, 下面為PS指令摘取的,
顯然,system、app_2分別對應的兩個進程的PID都不同,不知Android到底是怎樣實現它的機制的)
User PID PPID
system 953 883 187340 55052 ffffffff afe0cbcc S system_server
app_2 1072 883 100264 19564 ffffffff afe0dcc4 S com.android.inputmethod.
system 1083 883 111808 23192 ffffffff afe0dcc4 S android.process.omsservi
app_2 1088 883 156464 45720 ffffffff afe0dcc4 S android.process.acore
(3)默認apk生成的數據對外是不可見的
實現方法是:Android會為程序存儲的數據分配該程序的UserID。
藉助於Linux嚴格的文件系統訪問許可權,便實現了apk之間不能相互訪問似有數據的機制。
例:我的應用創建的一個文件,默認許可權如下,可以看到只有UserID為app_21的程序才能讀寫該文件。
-rw------- app_21 app_21 87650 2000-01-01 09:48 test.txt
如何對外開放?
<1> 使用MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE 標記。
When creating a new file with getSharedPreferences(String, int), openFileOutput(String, int), or openOrCreateDatabase(String, int, SQLiteDatabase.CursorFactory), you can use the MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE flags to allow any other package to read/write the file. When setting these flags, the file is still owned by your application, but its global read and/or write permissions have been set appropriately so any other application can see it.
(4)AndroidManifest.xml中的顯式許可權聲明
Android默認應用是沒有任何許可權去操作其他應用或系統相關特性的,應用在進行某些操作時都需要顯式地去申請相應的許可權。
一般以下動作時都需要申請相應的許可權:
A particular permission may be enforced at a number of places ring your program's operation:
At the time of a call into the system, to prevent an application from executing certain functions.
When starting an activity, to prevent applications from launching activities of other applications.
Both sending and receiving broadcasts, to control who can receive your broadcast or who can send a broadcast to you.
When accessing and operating on a content provider.
Binding or starting a service.
在應用安裝的時候,package installer會檢測該應用請求的許可權,根據該應用的簽名或者提示用戶來分配相應的許可權。
在程序運行期間是不檢測許可權的。如果安裝時許可權獲取失敗,那執行就會出錯,不會提示用戶許可權不夠。
大多數情況下,許可權不足導致的失敗會引發一個 SecurityException, 會在系統log(system log)中有相關記錄。
(5)許可權繼承/UserID繼承
當我們遇到apk許可權不足時,我們有時會考慮寫一個linux程序,然後由apk調用它去完成某個它沒有許可權完成的事情,很遺憾,這種方法是行不通的。
前面講過,android許可權是經營在進程層面的,也就是說一個apk應用啟動的子進程的許可權不可能超越其父進程的許可權(即apk的許可權),
即使單獨運行某個應用有許可權做某事,但如果它是由一個apk調用的,那許可權就會被限制。
實際上,android是通過給子進程分配父進程的UserID實現這一機制的。
(三)常見許可權不足問題分析
首先要知道,普通apk程序是運行在非root、非system層級的,也就是說看要訪問的文件的許可權時,看的是最後三位。
另外,通過system/app安裝的apk的許可權一般比直接安裝或adb install安裝的apk的許可權要高一些。
言歸正傳,運行一個android應用程序過程中遇到許可權不足,一般分為兩種情況:
(1)Log中可明顯看到許可權不足的提示。
此種情況一般是AndroidManifest.xml中缺少相應的許可權設置,好好查找一番許可權列表,應該就可解決,是最易處理的情況。
有時許可權都加上了,但還是報許可權不足,是什麼情況呢?
Android系統有一些API及許可權是需要apk具有一定的等級才能運行的。
比如 SystemClock.setCurrentTimeMillis()修改系統時間,WRITE_SECURE_SETTINGS許可權好像都是需要有system級的許可權才行。
也就是說UserID是system.
(2)Log里沒有報許可權不足,而是一些其他Exception的提示,這也有可能是許可權不足造成的。
比如:我們常會想讀/寫一個配置文件或其他一些不是自己創建的文件,常會報java.io.FileNotFoundException錯誤。
系統認為比較重要的文件一般許可權設置的也會比較嚴格,特別是一些很重要的(配置)文件或目錄。

-r--r----- bluetooth bluetooth 935 2010-07-09 20:21 dbus.conf
drwxrwx--x system system 2010-07-07 02:05 data
dbus.conf好像是藍牙的配置文件,從許可權上來看,根本就不可能改動,非bluetooth用戶連讀的權利都沒有。
/data目錄下存的是所有程序的私有數據,默認情況下android是不允許普通apk訪問/data目錄下內容的,通過data目錄的許可權設置可知,其他用戶沒有讀的許可權。
所以adb普通許可權下在data目錄下敲ls命令,會得到opendir failed, Permission denied的錯誤,通過代碼file.listfiles()也無法獲得data目錄下的內容。

閱讀全文

與android許可權相關的資料

熱點內容
php添加購物車 瀏覽:3
安卓怎麼下載植物大戰僵屍1無盡版 瀏覽:260
程序員上班下班難嗎 瀏覽:297
夢的pdf微盤 瀏覽:186
材料結構分析pdf 瀏覽:795
程序員預研的項目 瀏覽:346
新華保險伺服器登錄不上怎麼回事 瀏覽:397
氣溫高時汽車空調壓縮機振動 瀏覽:563
分配器python 瀏覽:228
outlook伺服器怎麼查詢 瀏覽:400
python預測疫情代碼 瀏覽:982
普通化學原理pdf 瀏覽:908
java的聖經 瀏覽:41
python遍歷兩個數組 瀏覽:396
手游搭建雲伺服器 瀏覽:401
視易鋒雲伺服器啟動黑屏 瀏覽:139
python怎麼獲取網頁a標簽內容 瀏覽:982
app更新後老的安裝包去哪裡了 瀏覽:199
集合運演算法則差集 瀏覽:310
x2pdf 瀏覽:271