日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android默认exported_android:exported 属性详解-阿里云开发者社区

發布時間:2024/7/23 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android默认exported_android:exported 属性详解-阿里云开发者社区 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

昨天在用360掃描應用漏洞時,掃描結果,出來一個Android:exported屬性,其實之前根本不知道這個屬性,更不知道這個屬性用來干嘛的,詳情見下圖:

因此,查了官方API,學習了一下這個屬性!

android:exported 是Android中的四大組件 Activity,Service,Provider,Receiver 四大組件中都會有的一個屬性。

總體來說它的主要作用是:是否支持其它應用調用當前組件。

默認值:如果包含有intent-filter 默認值為true; 沒有intent-filter默認值為false。

下面來詳細的了解一下四大組件中的這個屬性:

1、先來看:Activity中的:

……

android:exported=["true" | "false"]

……

/>

意思如下:

在Activity中該屬性用來標示:當前Activity是否可以被另一個Application的組件啟動:true允許被啟動;false不允許被啟動。

如果被設置為了false,那么這個Activity將只會被當前Application或者擁有同樣user ID的Application的組件調用。

exported 的默認值根據Activity中是否有intent filter 來定。沒有任何的filter意味著這個Activity只有在詳細的描述了他的class name后才能被喚醒 .這意味著這個Activity只能在應用內部使用,因為其它application并不知道這個class的存在。所以在這種情況下,它的默認值是false。從另一方面講,如果Activity里面至少有一個filter的話,意味著這個Activity可以被其它應用從外部喚起,這個時候它的默認值是true。

其實,不只有這個屬性可以指定Activity是否暴露給其它應用,也可以使用permission來限制外部實體喚醒當前Activity(詳情見permission屬性)

2、Service中的:

android:exported=["true" | "false"]

android:icon="drawable resource"

android:isolatedProcess=["true" | "false"]

android:label="string resource"

android:name="string"

android:permission="string"

android:process="string" >

. . .

意思如下:

該屬性用來標示,其它應用的組件是否可以喚醒service或者和這個service進行交互:true可以,false不可以。如果為false,只有同一個應用的組件或者有著同樣user ID的應用可以啟動這個service或者綁定這個service。

默認值根據當前service是否有intent filter來定。如果沒有任何filter意味著當前service只有在被詳細的描述class name后才會被喚醒。這意味這當前service只能在應用內部使用(因為其它應用不知道這個class name).所以在這種情況下它的默認值為 false.從另一方面講,如果至少有一個filter的話那么就意味著這個service可以被外部應用使用,這種情況下默認值為true。

其實,不只有這個屬性可以指定service是否暴露給其它應用。你也可以使用permission來限制外部實體喚醒當前service(詳情見permission屬性)

3、Provider中的:

android:enabled=["true" | "false"]

android:exported=["true" | "false"]

android:grantUriPermissions=["true" | "false"]

android:icon="drawable resource"

android:initOrder="integer"

android:label="string resource"

android:multiprocess=["true" | "false"]

android:name="string"

android:permission="string"

android:writePermission="string" >

. . .

意思如下:

當前內容提供者是否會被其它應用使用:

true: 當前提供者可以被其它應用使用。任何應用可以使用Provider通過URI 來獲得它,也可以通過相應的權限來使用Provider。

false:當前提供者不能被其它應用使用。設置Android:exported=“false”來限制其它應用獲得你應用的Provider。只有擁有同樣的user ID 的應用可以獲得當前應用的Provider。

當Android sdk 的最小版本為16或者更低時他的默認值是true。如果是17和以上的版本默認值是false。

可以通過Android:exported=“fasle” 和 permission來限制當前應用Provider是否會被其它應用獲取。

4、receiver中的:

android:exported=["true" | "false"]

android:icon="drawable resource"

android:label="string resource"

android:name="string"

android:permission="string"

android:process="string" >

. . .

意思如下:

當前broadcast Receiver 是否可以從當前應用外部獲取Receiver message 。true,可以;false 不可以。如果為false ,當前broadcast Receiver 只能收到同一個應用或者擁有同一 user ID 應用發出廣播。

默認值根據當前 broadcast Receiver 是否包含intent filter來定。如果沒有任何的filter的話意味著只有在被詳細的描述了class name的情況下才會被喚起。這意味著當前Receiver只能在應用內部被使用(因為其它應用不知道這個類的存在。)在這種情況下,默認值是false。如果至少包含一個filter意味著當前broadcast Receiver 將會收到來自系統或者其它應用的廣播,所以這個時候默認值是true。

不只有這個屬性可以指定broadcast Receiver 是否暴露給其它應用。你也可以使用permission來限制外部應用給他發送消息。

更正:

之前的默認值那塊寫錯了,應該是:

默認值:如果包含有intent-filter 默認值為true; 沒有intent-filter默認值為false。

本文轉自 一點點征服 ? 博客園博客,原文鏈接:http://www.cnblogs.com/ldq2016/p/6249302.html,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的android默认exported_android:exported 属性详解-阿里云开发者社区的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。