亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Android中使用自定義權限?

如何在Android中使用自定義權限?

HUH函數 2019-12-17 15:26:20
我有兩個應用程序。一種是聲明許可并擁有一個Activity:部分的AndroidManifest.xml<application    android:icon="@drawable/ic_launcher"    android:label="@string/app_name"    android:permission="your.namespace.permission.TEST" >    <activity        android:name=".DeclaringPermissionActivity"        android:label="@string/app_name" >        <intent-filter>            <action android:name="android.intent.action.MAIN" />            <category android:name="android.intent.category.LAUNCHER" />        </intent-filter>        <intent-filter>          <action android:name="android.intent.action.VIEW" />          <category android:name="android.intent.category.DEFAULT" />          <category android:name="android.intent.category.BROWSABLE" />          <data android:scheme="myapp"             android:host="myapp.mycompany.com" />         </intent-filter>     </activity></application>第二個聲明使用權限部分的AndroidManifest.xml<uses-sdk android:minSdkVersion="10" /><uses-permission android:name="your.namespace.permission.TEST" /><application的一部分Activity:public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.main);    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("myapp://myapp.mycompany.com/index")));}我正在安裝聲明權限的應用程序,然后運行第二個應用程序。結果我得到了安全異常: 01-11 09:46:55.249: E/AndroidRuntime(347): java.lang.RuntimeException: Unable to start activity ComponentInfo{your.namespace2/your.namespace2.UsingPErmissionActivity}: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.VIEW dat=myapp://myapp.mycompany.com/index cmp=your.namespace/.DeclaringPermissionActivity } from ProcessRecord{407842c0 347:your.namespace2/10082} (pid=347, uid=10082) requires your.namespace.permission.TEST
查看完整描述

3 回答

?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

您需要通過專門聲明在基本應用的清單中創建權限。例如:


<permission android:name="your.namespace.permission.TEST"

    android:protectionLevel="normal" android:label="This is my custom  permission" />

然后在所需的應用程序中將其用作:


<uses-permission android:name="your.namespace.permission.TEST" />

注意: 保持具有自定義權限的應用程序安裝順序至關重要。即你必須需要安裝該應用程序首先它聲明的許可,并在以后安裝一個,這使得使用它。此順序的任何中斷都可能破壞自定義的使用。權限。


查看完整回答
反對 回復 2019-12-17
?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

如答案中所述,您還應該考慮安裝應用程序的順序。


這很重要,因為:


如果請求權限的應用程序(應用程序B)安裝在定義權限的應用程序(應用程序A)之前,則特定設備中將沒有這樣定義的權限,因此操作系統根本不會要求該權限。


稍后,當您安裝App A并嘗試運行App B時,后者將無法訪問安全組件。


一種解決方法是在應用程序A和B中定義相同的自定義權限,以確保無論先安裝哪個應用程序,該設備中都存在該權限,因此,在安裝應用程序A時,該權限將已經已授予AppB。


但是在那種情況下,您應該確保兩個聲明中的保護級別都相同,因為這可能導致安全風險。


(請注意,從android 5.0開始,您不能在多個App中定義相同的權限,除非這些App是使用相同的簽名密鑰簽名的)。


查看完整回答
反對 回復 2019-12-17
  • 3 回答
  • 0 關注
  • 542 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號