android默認許可權
❶ 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 的root許可權
樓主您好,安卓手機最簡單的root許可權方法如下:首先在電腦上下載騰訊手機管家PC版for 安卓,安裝後運行,在上邊工具欄里有一選項「工具箱」,進入會看到「一鍵root」「甜椒刷機」和「kingroot」,這三個工具都是來幫助安卓手機root的,我就是使用「一鍵root」來幫助手機root的,很強大!
❸ android怎麼修改應用默認的許可權
額 默認許可權是什麼意思
如果要添加許可權的話可以去AndroidManifest.xml文件裡面直接添加
<uses-permission android:name="android.permission.這里選擇你需要的許可權"/>可以多次添加
❹ android app許可權怎麼默認開啟
...剪切?!!data/app就是你後安裝應用的位置 你把它剪切出來 又安裝是什麼意思啊?我不明白你的目的是什麼啊?但是 系統文件夾沒有一個是可以隨便刪的 (你安裝的應用 都是安裝在data/app文件夾里 這個安裝路徑 你給剪切沒了 當然安裝不上了)你只剪切了app文件夾吧?如果data也剪了 那我勸你還是重刷吧 弄回來比刷機還麻煩如果你只剪切了App 那就用RE管理器 在data下新建一個app文件夾 修改許可權為rwxrwx--x 重啟 就可以正常安裝應用了如果 你現在沒有RE 又沒辦法安裝...那還是就重刷吧...沒別的辦法了你是我見到的除了把啟動器刪除以外 第二鬧心的毛病了
❺ 安卓系統手機如何設置軟體許可權
若是使用vivo手機,可以進入設置--應用與許可權/更多設置--許可權管理--許可權中設置應用的許可權。
❻ 針對android 有哪些關於訪問訪問方面的許可權
Android是一個多進程系統,在這個系統中,應用程序(或者系統的部分)會在自己的進程中運行。系統和應用之間的安全性是通過Linux的facilities(工具,功能)在進程級別來強制實現的,比如會給應用程序分配user ID和Group ID。更細化的安全特性是通過"Permission"機制對特定的進程的特定的操作進行限制,而"per-URI permissions"可以對獲取特定數據的access專門許可權進行限制。
安全架構
Android安全架構中一個中心思想就是:應用程序在默認的情況下不可以執行任何對其他應用程序,系統或者用戶帶來負面影響的操作。這包括讀或寫用戶的私有數據(如聯系人數據或email數據),讀或寫另一個應用程序的文件,網路連接,保持設備處於非睡眠狀態。
一個應用程序的進程就是一個安全的沙盒。它不能幹擾其它應用程序,除非顯式地聲明了"permissions",以便它能夠獲取基本沙盒所不具備的額外的能力。它請求的這些許可權"permissions"可以被各種各樣的操作處理,如自動允許該許可權或者通過用戶提示或者證書來禁止該許可權。應用程序需要的那些"permissions"是靜態的在程序中聲明,所以他們會在程序安裝時就被知曉,並不會再改變。
應用程序簽名
所有的Android應用程序(.apk文件)必須用證書進行簽名認證,而這個證書的私鑰是由開發者保有的。該證書可以用以識別應用程序的作者。該證書也不需要CA簽名認證(註:CA就是一個第三方的證書認證機構,如verisign等)。Android應用程序允許而且一般也都是使用self-signed證書(即自簽名證書)。證書是用於在應用程序之間建立信任關系,而不是用於控製程序是否可以安裝。簽名影響安全性的最重要的方式是通過決定誰可以進入基於簽名的permisssions,以及誰可以share 用戶IDs。
用戶IDs和文件存取
每一個Android應用程序(.apk文件)都會在安裝時就分配一個獨有的Linux用戶ID,這就為它建立了一個沙盒,使其不能與其他應用程序進行接觸(也不會讓其它應用程序接觸它)。這個用戶ID會在安裝時分配給它,並在該設備上一直保持同一個數值。
由於安全性限制措施是發生進程級,所以兩個package中的代碼不會運行在同一個進程當中,他們要作為不同的Linux用戶出現。我們可以通過使用AndroidManifest.xml文件中的manifest標簽中的sharedUserId屬性,來使不同的package共用同一個用戶ID。通過這種方式,這兩個package就會被認為是同一個應用程序,擁有同一個用戶ID(實際不一定),並且擁有同樣的文件存取許可權。注意:為了保持安全,只有當兩個應用程序被同一個簽名簽署的時候(並且請求了同一個sharedUserId)才會被分配同樣的用戶ID.
所有存儲在應用程序中的數據都會賦予一個屬性-該應用程序的用戶ID,這使得其他package無法訪問這些數據。當通過這些方法getSharedPreferences(String, int), openFileOutput(String, int), or openOrCreateDatabase(String, int, SQLiteDatabase.CursorFactory)來創建一個新文件時,你可以通過使用MODE_WORLD_READABLE and/or MODE_WORLD_WRITEABLE標志位來設置是否允許其他package來訪問讀寫這個文件。當設置這些標志位時,該文件仍然屬於該應用程序,但是它的global read and/or write許可權已經被設置,使得它對於其他任何應用程序都是可見的。
Using Permissions 使用許可權
一個基本的Android程序通常是沒有任何permissions與之關聯的,這就是說它不能做任何擾亂用戶或破壞數據的勾當。那麼為了使用設備被保護的features,我們就必須在AndroidManifest.xml添加一個或多個<uses-permission> 標簽,用以聲明你的應用程序需要的permissions.
下面是個例子
For example, an application that needs to monitor incoming SMS messages would specify:
Xml代碼
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.app.myapp" > <uses-permission android:name="android.permission.RECEIVE_SMS" /> ... </manifest>
應用程序安裝的時候,應用程序請求的permissions是通過package installer來批准獲取的。package installer是通過檢查該應用程序的簽名和/或用戶的交換結果來確定是否給予該程序request的許可權。在用戶使用過程中不會去檢查許可權,也就是說要麼在安裝的時候就批准該許可權,使其按照設計可以使用該許可權;要麼就不批准,這樣用戶也就根本無法使用該feature,也不會有任何提示告知用戶嘗試失敗。
很多時候, 一個permission failure會導致一個SecurityException被拋回該應用程序. 但是Android並不保證這種情況會處處發生。例如,當數據被deliver到每一個receiver的時候,sendBroadcast(Intent) 方法會去檢查permissions,在這個方法調用返回之後,你也不會收到任何exception。幾乎絕大多數情況,一個permission failure都會列印到log當中。
Android系統定義的許可權可以在Manifest.permission中找到。任何一個程序都可以定義並強制執行自己獨有的permissions,因此Manifest.permission中定義的permissions並不是一個完整的列表(即有肯能有自定義的permissions)。
一個特定的permission可能會在程序操作的很多地方都被強制實施:
當系統有來電的時候,用以阻止程序執行其它功能;
啟動一個activity的時候,會控制誰可以啟動你的Acitivity;
在發送和接收廣播的時候,去控制誰可以接收你的廣播或誰可以發送廣播給你;
當進入並操作一個content provider的時候;
當綁定或開始一個service的時候。
聲明和使用Permissions
為了實現你自己的permissions,你必須首先在AndroidManifest.xml文件中聲明該permissions.通常我們通過使用一到多個<permission> tag來進行聲明。
下面例子說明了一個應用程序它想控制誰才可以啟動它的Activity:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.me.app.myapp" > <permissionandroid:name="com.me.app.myapp.permission.DEADLY_ACTIVITY" android:label="@string/permlab_deadlyActivity"android:description="@string/permdesc_deadlyActivity" android:permissionGroup="android.permission-group.COST_MONEY" android:protectionLevel="dangerous" /> ... </manifest>
這里<protectionLevel>屬性是需要聲明的(通常系統自有的permission都會有它對應的protection level,而我們自己定義的permission一般都需要定義protecdtion level, 若不去定義,則默認為normal)。通過聲明該屬性,我們就可以告知系統如何去通告用戶以及通告哪些內容,或者告知系統誰才可以擁有該permission。具體請參看鏈接的文檔。
這我多說兩句啊,這個protectionLevel分四個等級,分別是Normal, Dangerous, Signature, SignatureOrSystem,越往後安全等級越高。
這個<permissionGroup>屬性是可選項, 只是用於幫助系統顯示permissions給用戶(實際是告知系統該permission是屬於哪個permission group的)。你通常會選擇使用標準的system group來設定該屬性,或者用你自己定義的group(更為罕見)。通常使用一個已經存在的group會更合適,因為這樣UI顯示的時候會更簡單。
需要注意的是label和description都是需要為permission提供的。這些都是字元串資源,當用戶去看permission列表(android:label)或者某個permission的詳細信息(android:description)時,這些字元串資源就可以顯示給用戶。label應當盡量簡短,之需要告知用戶該permission是在保護什麼功能就行。而description可以用於具體描述獲取該permission的程序可以做哪些事情,實際上讓用戶可以知道如果他們同意程序獲取該許可權的話,該程序可以做什麼。我們通常用兩句話來描述permission,第一句描述該permission,第二句警告用戶如果批准該許可權會可能有什麼不好的事情發生。下面是一個描述CALL_PHONE permission的label和description的例子:
<string name="permlab_callPhone">directly call phone numbers</string> <string name="permdesc_callPhone">Allows the application to call phone numbers without your intervention. Malicious applications may cause unexpected calls on your phone bill. Note that this does not allow the application to call emergency numbers.</string>
你可以通過shell指令 adb shell pm list permissions 來查看目前系統已有的permissions. 特別的,"-s"選項會以一種用戶會看到的格式一樣的格式來顯示這些permissions.
在AndroidManifest.xml中強制使用Permissions
通過AP的AndroidManifest.xml文件可以設置該AP中各個組件的訪問許可權,包括Activity,
Service,BroadcastReceiver,ContentProvider。這些組件中都包含android:permission屬性,設置這個屬性就可以控制訪問該組件的許可權。
Activity permissions許可權限制了誰才可以啟動相應的activity。Permission會在Context.startActivity()和Activity.startActivityForResult()的時候進行檢查,如果caller沒有所需的許可權,則會拋出一個SecurityException。
Service permissions用於限制誰才可以start或bind該service。在Context.startService() , Context.stopService() 和 Context.bindService() 調用的時候會進行許可權檢查。如果caller沒有所需的許可權,則會拋出一個SecurityException。
BroadcastReceiver permissions用於限制誰才可以向該receiver發送廣播。許可權檢查會在Context.sendBroadcast() 返回時進行,由系統去發送已經提交的廣播給相應的Receiver。最終,一個permission failure不會再返回給Caller一個exception;它只是不會去deliver該Intent而已。同樣地,Context.registerReceiver() 也可以有自己permission用於限制誰才可以向一個在程序中注冊的receiver發送廣播。另一種方式是,一個permission也可以提供給Context.sendBroadcast() 用以限制哪一個BroadcastReceiver才可以接收該廣播。
ContentProvider permission用於限制誰才可以訪問ContentProvider提供的數據。(Content providers有一套另外的安全機制叫做URI permissions,這些在稍後討論)不同於其它的Components,這里有兩種不同的permission屬性可以設置: android:readPermission 用於限制誰可以讀取provider中的數據,而 android:writePermission 用於限制誰才可以向provider中寫入數據。需要注意的是如果provider既被read permission保護,也被write permission保護的話,如果這時只有write permission並不意味著你就可以讀取provider中的數據了。當你第一次獲取provider的時候就要進行許可權檢查(如果你沒有任何permission,則會拋出SecurityException)。當使用ContentResolver.query() 時需要讀許可權,而當使用 ContentResolver.insert() , ContentResolver.update() , ContentResolver.delete() 時需要寫許可權。在所有這些情況下,沒有所需的permission將會導致SecurityException被拋出。
在Sending Broadcasts時強制使用Permissions
除了之前說過的Permission(用於限制誰才可以發送廣播給相應的broadcastReceiver),你還可以在發送廣播的時候指定一個permission。在調用Context.sendBroadcast() 的時候使用一個permission string,你就可以要求receiver的宿主程序必須有相應的permission。值得注意的是Receiver和broadcaster都可以要求permission。當這種情況發生時,這兩種permission檢查都需要通過後才會將相應的intent發送給相關的目的地。
其它強制使用Permissions的方式
在調用service的過程中可以設置任意的fine-grained permissions(這里我理解的是更為細化的許可權)。這是通過Context.checkCallingPermission(String) 方法來完成的。呼叫的時候使用一個想得到的permission string,並且當該許可權獲批的時候可以返回給呼叫方一個Integer(沒有獲批也會返回一個Integer)。需要注意的是這種情況只能發生在來自另一個進程的呼叫,通常是一個service發布的IDL介面或者是其他方式提供給其他的進程。
Android提供了很多其他的方式用於檢查permissions。如果你有另一個進程的pid,你就可以通過context method Context.checkPermission(String, int, int) 去針對那個pid去檢查permission。如果你有另一個應用程序的package name,你可以直接用PackageManager method PackageManager.checkPermission(String, String) 來確定該package是否已經擁有了相應的許可權。
URI Permissions
到目前為止我們討論的標準的permission系統對於content provider來說是不夠的。一個content provider可能想保護它的讀寫許可權,而同時與它對應的直屬客戶端也需要將特定的URI傳遞給其它應用程序,以便其它應用程序對該URI進行操作。一個典型的例子就是郵件程序處理帶有附件的郵件。進入郵件需要使用permission來保護,因為這些是敏感的用戶數據。然而,如果有一個指向圖片附件的URI需要傳遞給圖片瀏覽器,那個圖片瀏覽器是不會有訪問附件的權利的,因為他不可能擁有所有的郵件的訪問許可權。
針對這個問題的解決方案就是per-URI permission: 當啟動一個activity或者給一個activity返回結果的時候,呼叫方可以設置Intent.FLAG_GRANT_READ_URI_PERMISSION 和/或 Intent.FLAG_GRANT_WRITE_URI_PERMISSION . 這會使接收該intent的activity獲取到進入該Intent指定的URI的許可權,而不論它是否有許可權進入該intent對應的content provider。
這種機制允許一個通常的capability-style模型, 這種模型是以用戶交互(如打開一個附件, 從列表中選擇一個聯系人)為驅動,特別獲取更細粒化的許可權。這是一種減少不必要許可權的重要方式,這種方式主要針對的就是那些和程序的行為直接相關的許可權。
這些URI permission的獲取需要content provider(包含那些URI)的配合。強烈推薦在content provider中提供這種能力,並通過android:grantUriPermissions 或者<grant-uri-permissions> 標簽來聲明支持。
更多的信息可以參考Context.grantUriPermission() , Context.revokeUriPermission() , and Context.checkUriPermission() methods.
轉載
❼ 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許可權管理
從 Android 6.0 開始,按照是否需要動態申請分為 普通許可權 和 特殊許可權
特殊許可權 需要程序運行時申請並通過之後才能使用,或者程序安裝為系統應用或系統簽名。
注意:
1、動態申請也需要在清單文件中配置(AndroidMenifest.xml)
2、許可權是分組的,同一組的許可權申請其中一個,同組的許可權就全部都申請了
特殊許可權共有 9 組:
9 組具體許可權列表:
普通許可權在清單文件配置(AndroidMenifest.xml)即可使用
(1)在 AndroidMenifest.xml 清單文件中申請
(2)單個申請
(2)批量申請
(3)回調處理
❾ 安卓系統許可權怎麼打開
目前大多數三星手機/平板電腦開發者選項為默認隱藏狀態,激活方法:設置-關於手機-軟體信息-連續點擊版本號7次-返回設置菜單,即可顯示開發者選項。
如需關閉開發者選項:設置-開發者選項-滑動關閉。
❿ 安卓11默認相機許可權解決辦法
這里分享下在華為手機設置默認相機步驟。
設備:華為P30
系統:EMUI9.1.0
軟體:今日水印相機9.24
1、首先在手機桌面點擊「設置」,如下圖所示。