android自定義權限的實現
在android開發中,有時需要利用自定義權限來保證android應用的安全,今天寫一個自定義權限的小案例。包含了訪問activity,service,以及發送廣播可廣播接受者,和自定義權限。
首先,新建兩個工程,一個叫做security,另一個叫做securitytest
在seurity中定義,聲明,并利用自定義的幾個權限,在securitytest中就像用普通的權限一樣,利用即可
security中聲明權限如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.security"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="18" />
<permission android:name="com.tct.permission.READ_PROVIDER" android:protectionLevel="dangerous">
</permission>
<permission android:name="com.tct.apermission.WRITE_PROVIDER" android:protectionLevel="dangerous">
</permission>
<permission
android:name="com.tct.attach.start_activity"
android:protectionLevel="normal" >
</permission>
<permission
android:name="com.tct.attach.service.permission"
android:protectionLevel="normal" >
</permission>
<permission
android:name="com.tct.attach.broadcastreceiver"
android:protectionLevel="dangerous" >
</permission>
<uses-permission android:name="com.tct.attach.service.permission" />
<uses-permission android:name="com.tct.attach.start_activity" />
<uses-permission android:name="com.tct.attach.broadcastreceiver" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.security.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name="com.example.security.MyService"
android:permission="com.tct.attach.service.permission" >
<intent-filter>
<action android:name="com.test.action.service" >
</action>
<category android:name="android.intent.category.DEFAULT" >
</category>
</intent-filter>
</service>
<activity
android:name="com.example.security.MyActivity"
android:permission="com.tct.attach.start_activity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" >
</action>
<category android:name="android.intent.category.DEFAULT" >
</category>
</intent-filter>
</activity>
<receiver
android:name="com.example.security.MyBroadcaseReceiver"
android:permission="com.tct.attach.broadcastreceiver" >
<intent-filter>
<action android:name="com.tct.receiver.action" >
</action>
</intent-filter>
</receiver>
<activity android:name="com.example.security.ShowReceiverActivity" >
</activity>
<activity android:name="com.example.security.MyBroadCast" >
</activity>
<provider
android:name="com.example.contentprovider.MyContentProvider"
android:authorities="com.liuhang.urlcontent"
android:exported="true" >
<!-- android:path="content://com.liuhang.urlcontent/person/3" -->
<path-permission
android:pathPrefix="/person"
android:readPermission="com.tct.apermission.WRITE_PROVIDER"
android:writePermission="com.tct.apermission.WRITE_PROVIDER"
></path-permission>
<grant-uri-permission android:pathPrefix="/person"/>
</provider>
</application>
</manifest>securitytest中的AndroidManifest.xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.securitytest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="12"
android:targetSdkVersion="18" />
<uses-permission android:name="com.tct.attach.service.permission"/>
<uses-permission android:name="com.tct.attach.start_activity"/>
<uses-permission android:name="com.tct.attach.broadcastreceiver"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="com.tct.permission.READ_PROVIDER"/>
<uses-permission android:name="com.tct.apermission.WRITE_PROVIDER"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.securitytest.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="com.example.securitytest.MyTestReceiver">
<intent-filter>
<action android:name="com.test.permission.sendbroadcast"></action>
</intent-filter>
</receiver>
</application>
</manifest>只有當在securitytest中利用了這些權限才可以訪問對應的activity,service,contentprovider以及接受和發送對應的廣播。
源碼如下:http://download.csdn.net/detail/mockingbirds/8109057
來自: http://blog.csdn.net//mockingbirds/article/details/40682679
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!