權(quán)限概述

權(quán)限的目的是保護(hù)Android用戶的隱私。
Android應(yīng)用必須請求訪問敏感用戶數(shù)據(jù)(如聯(lián)系人和短信)以及某些系統(tǒng)功能(如相機(jī)和互聯(lián)網(wǎng))的權(quán)限尊浓。根據(jù)功能过吻,系統(tǒng)可能會自動授予權(quán)限电抚,或者可能會提示用戶批準(zhǔn)請求惕稻。
Android安全體系結(jié)構(gòu)的核心設(shè)計點(diǎn)是,默認(rèn)情況下蝙叛,任何應(yīng)用程序都無權(quán)執(zhí)行任何會對其他應(yīng)用程序俺祠,操作系統(tǒng)或用戶產(chǎn)生負(fù)面影響的操作。這包括讀取或?qū)懭胗脩舻乃饺藬?shù)據(jù)(如聯(lián)系人或電子郵件)借帘,讀取或?qū)懭肫渌麘?yīng)用程序的文件蜘渣,執(zhí)行網(wǎng)絡(luò)訪問,保持設(shè)備喚醒等等肺然。
此頁面概述了Android權(quán)限的工作方式蔫缸,包括:如何向用戶顯示權(quán)限,安裝時和運(yùn)行時權(quán)限請求之間的區(qū)別际起,權(quán)限的實施方式以及權(quán)限及其組的類型拾碌。如果您只想獲得使用應(yīng)用程序權(quán)限的操作指南,請參閱請求應(yīng)用程序權(quán)限街望。

權(quán)限批準(zhǔn)

應(yīng)用必須通過在應(yīng)用清單中包含<uses-permission>標(biāo)記來宣傳其所需的權(quán)限校翔。 例如,需要發(fā)送SMS消息的應(yīng)用程序?qū)⒃谇鍐沃邪韵滦校?/p>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.snazzyapp">

    <uses-permission android:name="android.permission.SEND_SMS"/>

    <application ...>
        ...
    </application>
</manifest>

如果您的應(yīng)用在其清單中列出了正常權(quán)限(即灾前,不會對用戶的隱私或設(shè)備操作造成太大風(fēng)險的權(quán)限)防症,系統(tǒng)會自動將這些權(quán)限授予您的應(yīng)用。
如果您的應(yīng)用在其清單中列出了危險權(quán)限(即可能影響用戶隱私或設(shè)備正常運(yùn)行的權(quán)限)哎甲,例如上面的SEND_SMS權(quán)限告希,則用戶必須明確同意授予這些權(quán)限。
有關(guān)正常和危險權(quán)限的詳細(xì)信息烧给,請參閱保護(hù)級別。

請求提示危險權(quán)限

只有危險權(quán)限才需要用戶同意喝噪。 Android要求用戶授予危險權(quán)限的方式取決于用戶設(shè)備上運(yùn)行的Android版本以及應(yīng)用所針對的系統(tǒng)版本础嫡。

運(yùn)行時請求(Android 6.0或者更高)

如果設(shè)備運(yùn)行的是Android 6.0(API級別23)或更高版本,應(yīng)用程序的targetSdkVersion為23或更高酝惧,則在安裝時不會通知用戶任何應(yīng)用程序權(quán)限榴鼎。 您的應(yīng)用必須要求用戶在運(yùn)行時授予危險權(quán)限。 當(dāng)您的應(yīng)用請求權(quán)限時晚唇,用戶會看到系統(tǒng)對話框(如圖1左側(cè)所示)巫财,告訴用戶您的應(yīng)用嘗試訪問哪個權(quán)限組。 該對話框包括拒絕和允許按鈕哩陕。
如果用戶拒絕權(quán)限請求平项,則下次應(yīng)用請求權(quán)限時赫舒,該對話框包含一個復(fù)選框,選中該復(fù)選框后闽瓢,表示不希望再次提示用戶獲得權(quán)限(參見圖1接癌,右)。

image

圖1.初始權(quán)限對話框(左)和次要權(quán)限請求以及關(guān)閉進(jìn)一步請求的選項(右)

如果用戶選中“永不再詢問”框并點(diǎn)擊“拒絕”扣讼,則系統(tǒng)不再提示用戶以后是否嘗試請求相同的權(quán)限缺猛。
即使用戶授予您的應(yīng)用程序所請求的權(quán)限,您也不能總是依賴它椭符。 用戶還可以選擇在系統(tǒng)設(shè)置中逐個啟用和禁用權(quán)限荔燎。 您應(yīng)該始終在運(yùn)行時檢查并請求權(quán)限以防止運(yùn)行時錯誤(SecurityException)。
有關(guān)如何處理運(yùn)行時權(quán)限請求的詳細(xì)信息销钝,請參閱請求應(yīng)用程序權(quán)限有咨。

安裝時請求(Android 5.1.1或者更低)

如果設(shè)備運(yùn)行Android 5.1.1(API級別22)或更低版本,或者應(yīng)用程序的targetSdkVersion在任何版本的Android上運(yùn)行時為22或更低曙搬,系統(tǒng)會自動要求用戶在安裝時為您的應(yīng)用授予所有危險權(quán)限 - 時間(見圖2)摔吏。


image

圖2.安裝時權(quán)限對話框

如果用戶單擊“接受”,則會授予應(yīng)用程序請求的所有權(quán)限纵装。 如果用戶拒絕權(quán)限請求征讲,系統(tǒng)將取消應(yīng)用程序的安裝。
如果應(yīng)用更新包含對其他權(quán)限的需求橡娄,則會在更新應(yīng)用之前提示用戶接受這些新權(quán)限诗箍。
有關(guān)用于請求權(quán)限的建議用戶體驗?zāi)J降母攀觯垍㈤啈?yīng)用程序權(quán)限最佳實踐挽唉。
要了解如何檢查和請求用戶的權(quán)限滤祖,請參閱請求應(yīng)用程序權(quán)限。

可選硬件功能的權(quán)限

訪問某些硬件功能(如藍(lán)牙或相機(jī))需要應(yīng)用程序權(quán)限瓶籽。 但是匠童,并非所有Android設(shè)備都具有這些硬件功能。 因此塑顺,如果您的應(yīng)用請求CAMERA權(quán)限汤求,那么您還需要在清單中包含<uses-feature>標(biāo)記來聲明是否確實需要此功能。 例如:

<uses-feature android:name="android.hardware.camera" android:required="false" />

如果您為該功能聲明了android:required =“false”严拒,那么Google Play允許您的應(yīng)用安裝在沒有此功能的設(shè)備上扬绪。 然后,您必須通過調(diào)用PackageManager.hasSystemFeature()檢查當(dāng)前設(shè)備是否在運(yùn)行時具有該功能裤唠,并在該功能不可用時正常禁用該功能挤牛。
如果您未提供<uses-feature>標(biāo)記,那么當(dāng)Google Play看到您的應(yīng)用請求相應(yīng)的權(quán)限時种蘸,它會認(rèn)為您的應(yīng)用需要此功能墓赴。 因此竞膳,它會從沒有該功能的設(shè)備中過濾您的應(yīng)用,就像您在<uses-feature>標(biāo)記中聲明了android:required =“true”一樣竣蹦。
有關(guān)詳細(xì)信息顶猜,請參閱Google Play和基于功能的過濾

權(quán)限執(zhí)行

權(quán)限不僅適用于請求系統(tǒng)功能。 應(yīng)用程序提供的服務(wù)可以強(qiáng)制執(zhí)行自定義權(quán)限痘括,以限制誰可以使用它們长窄。 有關(guān)聲明自定義權(quán)限的詳細(xì)信息,請參閱定義自定義應(yīng)用程序權(quán)限纲菌。

活動權(quán)限執(zhí)行

使用android:permission屬性對清單中的<activity>標(biāo)記應(yīng)用的權(quán)限限制了誰可以啟動該Activity挠日。 在Context.startActivity()和Activity.startActivityForResult()期間檢查權(quán)限。 如果調(diào)用者沒有所需的權(quán)限翰舌,則從調(diào)用中拋出SecurityException嚣潜。

服務(wù)權(quán)限執(zhí)行

使用android:permission屬性對清單中的<service>標(biāo)記應(yīng)用的權(quán)限限制誰可以啟動或綁定到關(guān)聯(lián)的服務(wù)。 在Context.startService()椅贱,Context.stopService()和Context.bindService()期間檢查權(quán)限懂算。 如果調(diào)用者沒有所需的權(quán)限,則從調(diào)用中拋出SecurityException庇麦。

廣播權(quán)限執(zhí)行

使用android:permission屬性應(yīng)用于<receiver>標(biāo)簽的權(quán)限限制了誰可以向關(guān)聯(lián)的BroadcastReceiver發(fā)送廣播计技。 在Context.sendBroadcast()返回后檢查權(quán)限,因為系統(tǒng)嘗試將提交的廣播傳遞給給定的接收者山橄。 因此垮媒,權(quán)限失敗不會導(dǎo)致異常被拋回調(diào)用者; 它只是沒有提供意圖。
以同樣的方式航棱,可以向Context.registerReceiver()提供權(quán)限睡雇,以控制誰可以向編程注冊的接收者廣播。 另一方面饮醇,在調(diào)用Context.sendBroadcast()時可以提供權(quán)限以限制允許哪些廣播接收器接收廣播它抱。
請注意,接收方和廣播公司都需要許可朴艰。 發(fā)生這種情況時观蓄,必須通過兩個權(quán)限檢查才能將意圖傳遞給關(guān)聯(lián)目標(biāo)。 有關(guān)更多信息呵晚,請參閱限制具有權(quán)限的廣播。

Content Provider權(quán)限執(zhí)行

使用android:permission屬性對<provider>標(biāo)簽應(yīng)用的權(quán)限限制了誰可以訪問ContentProvider中的數(shù)據(jù)沫屡。 (內(nèi)容提供商有一個重要的額外安全設(shè)施饵隙,稱為URI權(quán)限,下面將對此進(jìn)行描述沮脖。)與其他組件不同金矛,您可以設(shè)置兩個單獨(dú)的權(quán)限屬性:android:readPermission限制誰可以從提供程序讀取芯急,以及android: writePermission限制誰可以寫入它。請注意驶俊,如果提供程序受讀取和寫入權(quán)限保護(hù)娶耍,則僅保留寫入權(quán)限并不意味著您可以從提供程序讀取。
首次檢索提供程序時將檢查權(quán)限(如果您沒有任何權(quán)限饼酿,則拋出SecurityException)榕酒,以及在提供程序上執(zhí)行操作時。使用ContentResolver.query()需要保持讀取權(quán)限;使用ContentResolver.insert()故俐,ContentResolver.update()想鹰,ContentResolver.delete()需要寫入權(quán)限。在所有這些情況下药版,未保留所需的權(quán)限會導(dǎo)致從調(diào)用中拋出SecurityException辑舷。

URI權(quán)限

當(dāng)與內(nèi)容提供商一起使用時,到目前為止描述的標(biāo)準(zhǔn)許可系統(tǒng)通常是不夠的槽片。內(nèi)容提供商可能希望使用讀取和寫入權(quán)限來保護(hù)自己何缓,而其直接客戶端還需要將特定URI交給其他應(yīng)用程序以供其操作。
一個典型的例子是電子郵件應(yīng)用程序中的附件还栓。應(yīng)該通過權(quán)限來保護(hù)對電子郵件的訪問碌廓,因為這是敏感的用戶數(shù)據(jù)。但是蝙云,如果向圖像查看器提供圖像附件的URI氓皱,則該圖像查看器不再具有打開附件的權(quán)限,因為它沒有理由擁有訪問所有電子郵件的權(quán)限勃刨。
此問題的解決方案是per-URI權(quán)限:啟動活動或?qū)⒔Y(jié)果返回給活動時波材,調(diào)用者可以設(shè)置Intent.FLAG_GRANT_READ_URI_PERMISSION和/或Intent.FLAG_GRANT_WRITE_URI_PERMISSION。這授予接收活動權(quán)限訪問意圖中的特定數(shù)據(jù)URI身隐,而不管它是否具有訪問對應(yīng)于意圖的內(nèi)容提供者中的數(shù)據(jù)的任何許可廷区。
此機(jī)制允許一種通用的功能樣式模型,其中用戶交互(例如打開附件或從列表中選擇聯(lián)系人)驅(qū)動臨時授予細(xì)粒度權(quán)限贾铝。這可以是將應(yīng)用程序所需的權(quán)限僅限于與其行為直接相關(guān)的權(quán)限的關(guān)鍵工具隙轻。
要構(gòu)建最安全的實現(xiàn),讓其他應(yīng)用程序?qū)δ趛or應(yīng)用程序中的操作負(fù)責(zé)垢揩,您應(yīng)該以這種方式使用細(xì)粒度權(quán)限玖绿,并使用android:grantUriPermissions屬性或<grant-uri-permissions>標(biāo)記聲明您的應(yīng)用程序?qū)λ闹С帧?br> 可以在Context.grantUriPermission(),Context.revokeUriPermission()和Context.checkUriPermission()方法中找到更多信息叁巨。

其他權(quán)限執(zhí)行

任何對服務(wù)的調(diào)用都可以強(qiáng)制執(zhí)行任意細(xì)粒度的權(quán)限斑匪。 這是通過Context.checkCallingPermission()方法完成的。 使用所需的權(quán)限字符串進(jìn)行調(diào)用锋勺,并返回一個整數(shù)蚀瘸,指示是否已將該權(quán)限授予當(dāng)前調(diào)用進(jìn)程狡蝶。 請注意,這只能在您執(zhí)行來自其他進(jìn)程的調(diào)用時使用贮勃,通常是通過從服務(wù)發(fā)布的IDL接口或以其他方式執(zhí)行到另一個進(jìn)程贪惹。

還有許多其他有用的方法可以檢查權(quán)限。 如果您具有另一個進(jìn)程的進(jìn)程ID(PID)寂嘉,則可以使用Context.checkPermission()方法檢查針對該P(yáng)ID的權(quán)限奏瞬。 如果您具有其他應(yīng)用程序的程序包名稱,則可以使用PackageManager.checkPermission()方法來確定該特定程序包是否已被授予特定權(quán)限垫释。

自動權(quán)限調(diào)整

隨著時間的推移丝格,可能會向平臺添加新的限制,以便為了使用某些API棵譬,您的應(yīng)用必須請求以前不需要的權(quán)限显蝌。 由于現(xiàn)有應(yīng)用程序假定可以免費(fèi)訪問這些API,因此Android可以將新的權(quán)限請求應(yīng)用于應(yīng)用程序的清單订咸,以避免破壞新平臺版本上的應(yīng)用程序(從而“為您的應(yīng)用程序”授予“權(quán)限”)曼尊。 Android根據(jù)為targetSdkVersion屬性提供的值,決定應(yīng)用是否可能需要該權(quán)限脏嚷。 如果該值低于添加權(quán)限的版本骆撇,則Android會添加權(quán)限。

例如父叙,從API級別19開始強(qiáng)制執(zhí)行READ_EXTERNAL_STORAGE權(quán)限神郊,以限制對共享存儲空間的訪問。 如果您的targetSdkVersion為18或更低趾唱,則此權(quán)限會在較新版本的Android上添加到您的應(yīng)用中涌乳。

警告:如果您的應(yīng)用自動添加了權(quán)限,則Google Play上的應(yīng)用列表會列出這些附加權(quán)限甜癞,即使您的應(yīng)用可能實際上并不需要這些權(quán)限夕晓。 要避免這種情況并刪除您不需要的默認(rèn)權(quán)限,請始終將targetSdkVersion更新為盡可能高悠咱。 您可以在Build.VERSION_CODES文檔中查看每個版本添加了哪些權(quán)限蒸辆。

保護(hù)級別

權(quán)限分為幾個保護(hù)級別。 保護(hù)級別會影響是否需要運(yùn)行時權(quán)限請求析既。
有三種保護(hù)級別會影響第三方應(yīng)用程序:正常躬贡,簽名和危險權(quán)限。

正常權(quán)限

普通權(quán)限涵蓋應(yīng)用程序需要訪問應(yīng)用程序沙箱外部數(shù)據(jù)或資源的區(qū)域眼坏,但用戶隱私或其他應(yīng)用程序操作的風(fēng)險很小拂玻。 例如,設(shè)置時區(qū)的權(quán)限是正常權(quán)限。
如果應(yīng)用程序在其清單中聲明它需要正常權(quán)限纺讲,則系統(tǒng)會在安裝時自動授予應(yīng)用程序該權(quán)限。 系統(tǒng)不會提示用戶授予正常權(quán)限囤屹,用戶也無法撤消這些權(quán)限熬甚。
從Android 9(API級別28)開始,以下權(quán)限被歸類為PROTECTION_NORMAL:

簽名權(quán)限

系統(tǒng)會在安裝時授予這些應(yīng)用程序權(quán)限肋坚,但僅限于嘗試使用權(quán)限的應(yīng)用程序使用與定義權(quán)限的應(yīng)用程序相同的證書進(jìn)行簽名時乡括。

注意:某些簽名權(quán)限不適用于第三方應(yīng)用程序。

從Android 8.1(API級別27)開始智厌,第三方應(yīng)用可以使用的以下權(quán)限歸類為PROTECTION_SIGNATURE:

危險的權(quán)限

危險權(quán)限涵蓋應(yīng)用程序需要涉及用戶私人信息的數(shù)據(jù)或資源的區(qū)域诲泌,或者可能會影響用戶存儲的數(shù)據(jù)或其他應(yīng)用程序的操作。 例如铣鹏,讀取用戶聯(lián)系人的權(quán)限是一種危險的權(quán)限敷扫。 如果應(yīng)用聲明它需要危險權(quán)限,則用戶必須明確授予該應(yīng)用的權(quán)限诚卸。 在用戶批準(zhǔn)該權(quán)限之前葵第,您的應(yīng)用無法提供依賴該權(quán)限的功能。
要使用危險權(quán)限合溺,您的應(yīng)用必須提示用戶在運(yùn)行時授予權(quán)限卒密。 有關(guān)如何提示用戶的更多詳細(xì)信息,請參閱危險權(quán)限的請求提示棠赛。
有關(guān)危險權(quán)限的列表哮奇,請參閱下面的表1。

特殊權(quán)限

有一些權(quán)限不像正常和危險的權(quán)限睛约。 SYSTEM_ALERT_WINDOW和WRITE_SETTINGS特別敏感鼎俘,因此大多數(shù)應(yīng)用程序不應(yīng)使用它們。 如果應(yīng)用程序需要其中一個權(quán)限痰腮,則必須在清單中聲明權(quán)限而芥,并發(fā)送請求用戶授權(quán)的意圖。 系統(tǒng)通過向用戶顯示詳細(xì)的管理屏幕來響應(yīng)意圖膀值。
有關(guān)如何請求這些權(quán)限的詳細(xì)信息棍丐,請參閱SYSTEM_ALERT_WINDOW和WRITE_SETTINGS參考條目。
可以在Manifest.permission中找到Android系統(tǒng)提供的所有權(quán)限沧踏。

權(quán)限組

權(quán)限分組到與設(shè)備功能或功能相關(guān)的組中歌逢。 在此系統(tǒng)下,權(quán)限請求在組級別處理翘狱,單個權(quán)限組對應(yīng)于應(yīng)用程序清單中的多個權(quán)限聲明秘案。 例如,SMS組包括READ_SMS和RECEIVE_SMS聲明。 以這種方式對權(quán)限進(jìn)行分組使用戶能夠做出更有意義和更明智的選擇阱高,而不會被復(fù)雜和技術(shù)許可請求所淹沒赚导。


image

所有危險的Android權(quán)限都屬于權(quán)限組。無論保護(hù)級別如何赤惊,任何權(quán)限都可以屬于權(quán)限組吼旧。但是,如果權(quán)限是危險的未舟,則權(quán)限組僅影響用戶體驗圈暗。
如果設(shè)備運(yùn)行的是Android 6.0(API級別23)且應(yīng)用的targetSdkVersion為23或更高,則當(dāng)您的應(yīng)用請求危險權(quán)限時裕膀,以下系統(tǒng)行為適用:

  • 如果應(yīng)用程序當(dāng)前在權(quán)限組中沒有任何權(quán)限员串,系統(tǒng)會向用戶顯示描述應(yīng)用程序要訪問的權(quán)限組的權(quán)限請求對話框。該對話框未描述該組中的特定權(quán)限昼扛。例如寸齐,如果某個應(yīng)用請求READ_CONTACTS權(quán)限,系統(tǒng)對話框只會說該應(yīng)用需要訪問該設(shè)備的聯(lián)系人抄谐。如果用戶授予批準(zhǔn)访忿,系統(tǒng)將為應(yīng)用程序提供其請求的權(quán)限。
  • 如果應(yīng)用程序已在同一權(quán)限組中被授予其他危險權(quán)限斯稳,則系統(tǒng)會立即授予權(quán)限海铆,而不與用戶進(jìn)行任何交互。例如挣惰,如果應(yīng)用程序先前已請求并已獲得READ_CONTACTS權(quán)限卧斟,然后它請求WRITE_CONTACTS,則系統(tǒng)會立即授予該權(quán)限憎茂,而不向用戶顯示權(quán)限對話框珍语。

警告:未來版本的Android SDK可能會將特定權(quán)限從一個組移動到另一個組。 因此竖幔,請不要將應(yīng)用程序的邏輯基于這些權(quán)限組的結(jié)構(gòu)板乙。
例如,READ_CONTACTS與Android 8.1(API級別27)中的WRITE_CONTACTS屬于同一權(quán)限組拳氢。 如果您的應(yīng)用程序請求READ_CONTACTS權(quán)限募逞,然后請求WRITE_CONTACTS權(quán)限,請不要假設(shè)系統(tǒng)可以自動授予WRITE_CONTACTS權(quán)限馋评。

如果設(shè)備運(yùn)行的是Android 5.1(API級別22)或更低版本放接,或者應(yīng)用程序的targetSdkVersion為22或更低,系統(tǒng)會要求用戶在安裝時授予權(quán)限留特。 系統(tǒng)再一次告訴用戶應(yīng)用程序需要哪些權(quán)限組纠脾,而不是單個權(quán)限玛瘸。 例如,當(dāng)應(yīng)用程序請求READ_CONTACTS時苟蹈,安裝對話框?qū)⒘谐觥奥?lián)系人”組糊渊。 當(dāng)用戶接受時,只有READ_CONTACTS權(quán)限被授予應(yīng)用程序慧脱。

注意:即使用戶已在同一組中授予了其他權(quán)限再来,您的應(yīng)用仍需要明確請求其所需的每個權(quán)限。 此外磷瘤,將權(quán)限分組到組中可能會在將來的Android版本中發(fā)生變化。 您的代碼不應(yīng)具有依賴于同一組中的一組特定權(quán)限的邏輯搜变。

表1.危險權(quán)限和權(quán)限組采缚。


1.png
2.png

查看應(yīng)用的權(quán)限

您可以使用“設(shè)置”應(yīng)用程序和shell命令adb shell pm list permissions查看當(dāng)前在系統(tǒng)中定義的所有權(quán)限。 要使用“設(shè)置”應(yīng)用挠他,請轉(zhuǎn)到“設(shè)置”>“應(yīng)用”扳抽。 選擇一個應(yīng)用并向下滾動以查看該應(yīng)用使用的權(quán)限。 對于開發(fā)人員殖侵,adb'-s'選項以與用戶看到的方式類似的形式顯示權(quán)限:

$ adb shell pm list permissions -s All Permissions: Network communication:
 view Wi-Fi state, create Bluetooth connections, full internet access, 
view network state Your location: access extra location provider commands, 
fine (GPS) location, mock location sources for testing, 
coarse (network-based) location Services that cost you money: 
send SMS messages, directly call phone numbers ...

在模擬器或測試設(shè)備上安裝應(yīng)用程序時贸呢,您還可以使用adb -g選項自動授予所有權(quán)限:

$ adb shell install -g MyApp.apk
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市拢军,隨后出現(xiàn)的幾起案子楞陷,更是在濱河造成了極大的恐慌,老刑警劉巖茉唉,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件固蛾,死亡現(xiàn)場離奇詭異,居然都是意外死亡度陆,警方通過查閱死者的電腦和手機(jī)艾凯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來懂傀,“玉大人趾诗,你說我怎么就攤上這事〉乓希” “怎么了恃泪?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長犀斋。 經(jīng)常有香客問我悟泵,道長,這世上最難降的妖魔是什么闪水? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任糕非,我火速辦了婚禮蒙具,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘朽肥。我一直安慰自己禁筏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布衡招。 她就那樣靜靜地躺著篱昔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪始腾。 梳的紋絲不亂的頭發(fā)上州刽,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機(jī)與錄音浪箭,去河邊找鬼穗椅。 笑死,一個胖子當(dāng)著我的面吹牛奶栖,可吹牛的內(nèi)容都是我干的匹表。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼宣鄙,長吁一口氣:“原來是場噩夢啊……” “哼袍镀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起冻晤,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤苇羡,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鼻弧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宣虾,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年温数,在試婚紗的時候發(fā)現(xiàn)自己被綠了绣硝。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡撑刺,死狀恐怖鹉胖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情够傍,我是刑警寧澤甫菠,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站冕屯,受9級特大地震影響寂诱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜安聘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一痰洒、第九天 我趴在偏房一處隱蔽的房頂上張望瓢棒。 院中可真熱鬧,春花似錦丘喻、人聲如沸脯宿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽连霉。三九已至,卻和暖如春嗡靡,著一層夾襖步出監(jiān)牢的瞬間跺撼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工讨彼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留歉井,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓点骑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親谍夭。 傳聞我的和親對象是個殘疾皇子黑滴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 權(quán)限的目的是保護(hù)Android用戶的隱私。Android應(yīng)用訪問敏感的用戶數(shù)據(jù)(如聯(lián)系人和短信)以及某些系統(tǒng)功能(...
    鹿小純0831閱讀 1,232評論 0 1
  • 權(quán)限概述 權(quán)限的目的是保護(hù)Android用戶的隱私紧索。Android應(yīng)用程序必須請求訪問敏感用戶數(shù)據(jù)(如聯(lián)系人和短信...
    WilsonYoung閱讀 1,272評論 0 0
  • 前言 Android 是一個權(quán)限分隔的操作系統(tǒng)袁辈,其中每個應(yīng)用都有其獨(dú)特的系統(tǒng)標(biāo)識(Linux 用戶 ID 和組 I...
    清明捉鬼閱讀 947評論 0 2
  • AndroidManifest.xml文件安全探索 secbang.com simeon 最近在做一些apk的安全...
    simeon2015閱讀 2,324評論 0 1
  • 系統(tǒng)權(quán)限 Android 是一個權(quán)限分隔的操作系統(tǒng),其中每個應(yīng)用都有其獨(dú)特的系統(tǒng)標(biāo)識(Linux 用戶 ID 和組...
    進(jìn)攻的螞蟻閱讀 2,190評論 0 0