android自訂許可權

來源:互聯網
上載者:User

實現這樣的功能:兩個應用程式A和B,B要有相應的許可權才能訪問A中的某個Activity。

1。首先看A的實現

先在A的Activity裡加一個TextView,寫些內容方便等下檢驗。下面設定manifest.xml,增加一個自訂的許可權

 

代碼

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="giuz.blog1"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name="giuz.blog1.ActivityBlog1"
android:label="@string/app_name"
android:permission="giuz.permission.SEE">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

<permission android:protectionLevel="normal" android:name="giuz.permission.SEE">
  </permission>


</manifest>

底線部分是要注意的。

  第一個底線,這個Activity的android:name要寫包名+類名:giuz.blog1.ActivityBlog1,不然等下會報找不到Activity的錯誤。

<permission android:protectionLevel="normal" android:name="giuz.permission.SEE"></permission>這句,
android:protectionLevel是必須要的,它的值normal或者dangerous、signature、signatureOrSystem。
android:name的值就是自訂的許可權,格式是**.permission.**(giuz.x.permission.SEE也可以的)。

2。B的實現
B的Activity裡通過Intent來訪問,在My Code裡,下面的代碼是放在一個按鈕的點擊事件中的:
Intent intent = new Intent();
//下面是用Component實現
//如果我寫成intent.setClassName("giuz.blog1", "giuz.blog1.ActivityBlog1")
//卻會報錯,不理解。
intent.setComponent(new ComponentName("giuz.blog1", "giuz.blog1.ActivityBlog1"));
startActivity(intent)

第二行的第一個參數是A的那個被訪問的Activity的包名,第二個參數是包名+類名

因為A現在有了自訂的許可權,而B現在還沒有許可權訪問,所以如果現在訪問會出現 Permission Denial的報錯。
給B加上許可權,就是在B的manifest.xml裡加上下面這句

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

這樣B就有許可權訪問了。
貼兩張運行

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.