Develop系列-API Guides-簡介3

來源:互聯網
上載者:User

標籤:des   android   style   blog   http   color   java   使用   

系統許可權 安全架構

app在獨立進程沙箱中運行,互不影響。app靜態定義所需要的許可權,系統安裝時提醒使用者是否給app授權。

應用簽名

所有應用必須用認證簽名,認證由開發人員管理,它們是開發人員的唯一標識。

使用者ID和檔案訪問

1、同樣的shareUserId和簽名,才能在同一個進程中共用一個使用者ID

2、在建立新檔案時,可以通過MODE_WORLD_READABLE 或 MODE_WORLD_WRITEABLE標籤來設定其他應用能否讀寫此檔案

使用許可權

預設的,app沒有任何許可權,需要在AndroidManifest中的<uses-permission>標籤來定義所需的許可權。

比如app需要監聽簡訊訊息時:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.android.app.myapp" >    <uses-permission android:name="android.permission.RECEIVE_SMS" />    ...</manifest>

應用在安裝的時候,package installer能夠根據應用的簽名和使用者的選擇來授權。

通常來說,授權失敗將拋出SecurityException異常,但並不是每次授權失敗都會拋此異常。

然而,正常安裝過程中,所有的app需要的許可權都必須確認後,才能安裝,所以基本不存在運行時授權失敗的問題。

Android系統提供的所有許可權可以在Manifest.permission查詢,任何應用都可以自訂許可權。

特定的許可權可以用於各種情境:

  • 系統調用的時候,通過許可權來避免應用執行特定功能
  • 啟動activity時,通過許可權來阻止被其他應用所啟動
  • 收發廣播時,通過許可權來控制廣播收發的對象
  • 訪問和操作content provider
  • 綁定或者啟動服務

Caution:?

自訂許可權

如果app想控制其他app能否有許可權啟動自身,可用通過如下方式來定義:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.me.app.myapp" >    <permission android:name="com.me.app.myapp.permission.DEADLY_ACTIVITY"
        <!--app用到此許可權,安裝時彈出的提示標題-->        android:label="@string/permlab_deadlyActivity"
        <!--提示內容-->        android:description="@string/permdesc_deadlyActivity"
        <!--可選項-->        android:permissionGroup="android.permission-group.COST_MONEY"
        <!--必選項-->        android:protectionLevel="dangerous" />    ...</manifest>

adb shell pm list permissions(TODO:adb shell pm命令解析)

對於組件的存取權限,可以在AndroidManifest.xml中定義特定組件的android:permission屬性來控制

Activity:

誰能啟動它,許可權在Context.startActivity() 和 Activity.startActivityForResult()檢查,失敗會拋SecurityException

Service:

誰能啟動或綁定它,許可權在Context.startService(), Context.stopService() 和 Context.bindService()檢查,失敗拋SecurityException

BroadcastReceiver:

誰能給它發廣播,在Context.sendBroadcast()檢查,失敗不會拋異常,同時ontext.registerReceiver()也能檢查。在Context.sendBroadcast()時,可以帶許可權字串的參數來確認許可權。廣播發送和接收都可以設定許可權,如果同時設定,那麼必須同時匹配才會生效。

ContentProvider:

誰能訪問它的資料(CP還有另外一個非常重要的許可權機制:URI permissions ),CP分讀(android:readPermission)和寫(android:writePermission)兩種許可權,必須注意的是,如果讀和寫入權限同時存在,那麼僅僅擁有寫入權限的應用無法讀取資料。讀許可權在ContentResolver.query() 檢查,寫入權限在ContentResolver.insert(),ContentResolver.update(), ContentResolver.delete() 檢查,失敗會拋SecurityException

還有其他檢查許可權的方式,比如Context.checkCallingPermission(), Context.checkPermission(String, int, int), PackageManager.checkPermission(String, String)

URI許可權

TODO

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.