編輯:關於Android編程
Android 通過在每台設備上實施了基於權限的安全策略來處理安全問題,采用權限來限制安裝應用程序的能力。當某個權限與某個操作和資源對象綁定在一起,我們必須獲得這個權限才能在對象上執行操作。由於Android設計本身就是為Android開發人員著想,所以一切權限許可權由用戶決定而不是手機制造商和平台提供商,但這不得不帶來了開發者濫用權限,黑客通過權限來進行惡意行為的風險,所以作為靜態分析一個App是否為惡意軟件的第一道關,獲取並了解Android Permission權限意義是十分重大的。
Android 框架提供一套默認的權限存儲在android.anifest.permission類中,同時也允許我們自己定義新的權限。我們在寫應用程序時聲明權限,程序安裝時新權限被引入系統,權限授權在應用程序被安裝時執行。當在設備上安裝應用程序時,程序將請求完成任務必需的權限集合,被請求的權限列單顯示在設備屏幕上以待用戶審查只有用戶同意授權後,程序才會被安裝,該應用程序獲得所有被請求的權限。所以Android系統實施的主要安全准則是應用程序只有得到權限許可後,才能執行可能會影響到系統其它部分的操作。每個權限被定義成一個字符串,用來傳達權限以執行某個特殊的操作。所有權限可以分為兩個類別:一種是執行程序時被應用程序所請求的權限,一種是應用程序的組件之間通信時被其它組件請求的權限。開發者通過在AndroidManifest.xml文件中編寫權限標簽來定義以上兩種類別的權限策略。
應用程序可以用一個
4、權限請求
應用程序列出所有需要用來完成任務的權限,分別用
5、獲取權限
獲取權限,是我們靜態分析某個App的第一關,通過知道App所具有的權限,我們一般能夠基本知道該App或許會有哪些行為。目前已有多個工具可以靜態檢測Android app所具有的Permissions,這類工具有:aapt、apktool、androguard等等。
6、Android自定義權限
在android系統的安全模型中,應用程序在默認的情況下不可以執行任何對其他應用程序,系統或者用戶帶來負面影響的操作。如果應用需要執行某些操作,就需要聲明使用這個操作對應的權限(在manifest文件中 添加
android 系統提供了一系列這樣的權限,具體可以查看android 權限,另外,android系統在新的版本中會增加一些permission,可以查看android 版本信息。
當然,app也可以自定義屬於自己的permission 或屬於開發者使用的同一個簽名的permission。定義一個permission 就是在menifest文件中添加一個permission標簽。
各屬性詳解:
android:description:對權限的描述,一般是兩句話,第一句話描述這個權限所針對的操作,第二句話告訴用戶授予app這個權限會帶來的後果;
android:label:對權限的一個簡短描述;
android:name:權限的唯一標識,一般都是使用 報名加權限名;
android:permissionGroup:權限所屬權限組的名稱;
android:protectionLevel:權限的等級,包含以下幾個:
normal是最低的等級,聲明次權限的app,系統會默認授予次權限,不會提示用戶;
dangerous權限對應的操作有安全風險,系統在安裝聲明此類權限的app時會提示用戶;
signature權限表明的操作只針對使用同一個證書簽名的app開放;
signatureOrSystem與signature類似,只是增加了rom中自帶的app的聲明;
其中android:name屬性是必須的,其他的可選,未寫的系統會指定默認值。
7、Android權限一覽
在Android的設計中,資源的訪問或者網絡連接,要得到這些服務都需要聲明其訪問權限,否則將無法正常工作。在Android中這樣的權限有很多種,這裡將各類訪問權限一一羅列出來,供大家使用時參考之用。
權限
描述
android.permission.EXPAND_STATUS_BAR
允許一個程序擴展收縮在狀態欄,android開發網提示應該是一個類似Windows Mobile中的托盤程序
android.permission.FACTORY_TEST
作為一個工廠測試程序,運行在root用戶
android.permission.FLASHLIGHT
訪問閃光燈,android開發網提示HTC Dream不包含閃光燈
android.permission.FORCE_BACK
允許程序強行一個後退操作是否在頂層activities
android.permission.FOTA_UPDATE
暫時不了解這是做什麼使用的,android開發網分析可能是一個預留權限
android.permission.GET_ACCOUNTS
訪問一個帳戶列表在Accounts Service中
android.permission.GET_PACKAGE_SIZE
允許一個程序獲取任何package占用空間容量
android.permission.GET_TASKS
允許一個程序獲取信息有關當前或最近運行的任務,一個縮略的任務狀態,是否活動等等
android.permission.HARDWARE_TEST
允許訪問硬件
android.permission.INJECT_EVENTS
允許一個程序截獲用戶事件如按鍵、觸摸、軌跡球等等到一個時間流
android.permission.INSTALL_PACKAGES
允許一個程序安裝packages
android.permission.INTERNAL_SYSTEM_WINDOW
允許打開窗口使用系統用戶界面
android.permission.ACCESS_CHECKIN_PROPERTIES
允許讀寫訪問“properties”表在checkin數據庫中,改值可以修改上傳
android.permission.ACCESS_COARSE_LOCATION
允許一個程序訪問CellID或WiFi熱點來獲取粗略的位置
android.permission.ACCESS_FINE_LOCATION
允許一個程序訪問精良位置(如GPS)
android.permission.WRITE_CONTACTS
允許程序寫入但不讀取用戶聯系人數據
android.permission.WRITE_GSERVICES
允許程序修改Google服務地圖
android.permission.WRITE_OWNER_DATA
允許一個程序寫入但不讀取所有者數據
android.permission.WRITE_SETTINGS
允許程序讀取或寫入系統設置
android.permission.WRITE_SMS
允許程序寫短信
android.permission.WRITE_SYNC_SETTINGS
允許程序寫入同步設置
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
允許應用程序訪問額外的位置提供命令
android.permission.ACCESS_MOCK_LOCATION
允許程序創建模擬位置提供用於測試
android.permission.ACCESS_NETWORK_STATE
允許程序訪問有關GSM網絡信息
android.permission.ACCESS_SURFACE_FLINGER
允許程序使用SurfaceFlinger底層特性
android.permission.ACCESS_WIFI_STATE
允許程序訪問Wi-Fi網絡狀態信息
android.permission.ADD_SYSTEM_SERVICE
允許程序發布系統級服務
android.permission.BATTERY_STATS
允許程序更新手機電池統計信息
android.permission.BLUETOOTH
允許程序連接到已配對的藍牙設備
android.permission.BLUETOOTH_ADMIN
允許程序發現和配對藍牙設備
android.permission.BROADCAST_PACKAGE_REMOVED
允許程序廣播一個提示消息在一個應用程序包已經移除後
android.permission.BROADCAST_STICKY
允許一個程序廣播常用intents
android.permission.CALL_PHONE
允許一個程序初始化一個電話撥號不需通過撥號用戶界面需要用戶確認
android.permission.DELETE_CACHE_FILES
允許程序刪除緩存文件
android.permission.DELETE_PACKAGES
允許一個程序刪除包
android.permission.DEVICE_POWER
允許訪問底層電源管理
android.permission.DIAGNOSTIC
允許程序RW診斷資源
android.permission.DISABLE_KEYGUARD
允許程序禁用鍵盤鎖
android.permission.DUMP
允許程序返回狀態抓取信息從系統服務
android.permission.CALL_PRIVILEGED
允許一個程序撥打任何號碼,包含緊急號碼無需通過撥號用戶界面需要用戶確認
android.permission.CAMERA
請求訪問使用照相設備
android.permission.CHANGE_COMPONENT_ENABLED_STATE
允許一個程序是否改變一個組件或其他的啟用或禁用
android.permission.CHANGE_CONFIGURATION
允許一個程序修改當前設置,如本地化
android.permission.CHANGE_NETWORK_STATE
允許程序改變網絡連接狀態
android.permission.CHANGE_WIFI_STATE
允許程序改變Wi-Fi連接狀態
android.permission.CLEAR_APP_CACHE
允許一個程序清楚緩存從所有安裝的程序在設備中
android.permission.CLEAR_APP_USER_DATA
允許一個程序清除用戶設置
android.permission.CONTROL_LOCATION_UPDATES
允許啟用禁止位置更新提示從無線模塊
android.permission.REBOOT
請求能夠重新啟動設備
android.permission.RECEIVE_BOOT_COMPLETED
允許一個程序接收到ACTION_BOOT_COMPLETED廣播在系統完成啟動
android.permission.RECEIVE_MMS
允許一個程序監控將收到MMS彩信,記錄或處理
android.permission.RECEIVE_SMS
允許程序監控一個將收到短信息,記錄或處理
android.permission.RECEIVE_WAP_PUSH
允許程序監控將收到WAP PUSH信息
android.permission.RECORD_AUDIO
允許程序錄制音頻
android.permission.REORDER_TASKS
允許程序改變Z軸排列任務
android.permission.RESTART_PACKAGES
允許程序重新啟動其他程序
android.permission.SEND_SMS
允許程序發送SMS短信
android.permission.INTERNET
允許程序打開網絡套接字
android.permission.MANAGE_APP_TOKENS
允許程序管理(創建、催後、 z-order默認向z軸推移)程序引用在窗口管理器中
android.permission.MASTER_CLEAR
目前還沒有明確的解釋,android開發網分析可能是清除一切數據,類似硬格機
android.permission.MODIFY_AUDIO_SETTINGS
允許程序修改全局音頻設置
android.permission.MODIFY_PHONE_STATE
允許修改話機狀態,如電源,人機接口等
android.permission.MOUNT_UNMOUNT_FILESYSTEMS
允許掛載和反掛載文件系統可移動存儲
android.permission.PERSISTENT_ACTIVITY允許一個程序設置他的activities顯示
android.permission.PROCESS_OUTGOING_CALLS
允許程序監視、修改有關播出電話
android.permission.READ_CALENDAR
允許程序讀取用戶日歷數據
android.permission.READ_CONTACTS
允許程序讀取用戶聯系人數據
android.permission.READ_FRAME_BUFFER
允許程序屏幕波或和更多常規的訪問幀緩沖數據
android.permission.READ_INPUT_STATE
允許程序返回當前按鍵狀態
android.permission.READ_LOGS
允許程序讀取底層系統日志文件
android.permission.READ_OWNER_DATA
允許程序讀取所有者數據
android.permission.READ_SMS
允許程序讀取短信息
android.permission.READ_SYNC_SETTINGS
允許程序讀取同步設置
android.permission.READ_SYNC_STATS
允許程序讀取同步狀態
android.permission.SET_ACTIVITY_WATCHER
允許程序監控或控制activities已經啟動全局系統中
android.permission.SET_ALWAYS_FINISH
允許程序控制是否活動間接完成在處於後台時
android.permission.SET_ANIMATION_SCALE
修改全局信息比例
android.permission.SET_DEBUG_APP
配置一個程序用於調試
android.permission.SET_ORIENTATION
允許底層訪問設置屏幕方向和實際旋轉
android.permission.SET_PREFERRED_APPLICATIONS
允許一個程序修改列表參數PackageManager.addPackageToPreferred()和PackageManager.removePackageFromPreferred()方法
android.permission.SET_PROCESS_FOREGROUND
允許程序當前運行程序強行到前台
android.permission.SET_PROCESS_LIMIT
允許設置最大的運行進程數量
android.permission.SET_TIME_ZONE
允許程序設置時間區域
android.permission.SET_WALLPAPER
允許程序設置壁紙
android.permission.SET_WALLPAPER_HINTS
允許程序設置壁紙hits
android.permission.SIGNAL_PERSISTENT_PROCESSES
允許程序請求發送信號到所有顯示的進程中
android.permission.STATUS_BAR
允許程序打開、關閉或禁用狀態欄及圖標
android.permission.SUBSCRIBED_FEEDS_READ
允許一個程序訪問訂閱RSS Feed內容提供
android.permission.SUBSCRIBED_FEEDS_WRITE
系統暫時保留改設置
android.permission.SYSTEM_ALERT_WINDOW
允許一個程序打開窗口使用TYPE_SYSTEM_ALERT,顯示在其他所有程序的頂層
android.permission.VIBRATE
允許訪問振動設備
android.permission.WAKE_LOCK
允許使用PowerManager的 WakeLocks保持進程在休眠時從屏幕消失
android.permission.WRITE_APN_SETTINGS
允許程序寫入API設置
android.permission.WRITE_CALENDAR
允許一個程序寫入但不讀取用戶日歷數據
Activity是什麼?我們都知道android中有四大組件(Activity 活動,Service 服務,Content Provider 內容提供者,Broadcas
1.Device tree設備樹概述設備樹包含DTC(device treecompiler),DTS(device treesource和DTB(device tree
由於官方的Android原生UI組件解釋的並不是很完整,根據個人的不斷摸索,終於成功完成原生組件的制作,所以寫下這篇文章作為記錄,也給讓小白們少走些彎路。我這裡通過講解制
1.使用Service2.綁定Service3.Service的生命周期--------------------------------------------1.使用S
Android Gradle Build Error:Some file