In the security model of the Android system, the application is not allowed to perform any actions that adversely affect other applications, systems or users by default. If your app needs to do something, you need to declare the permissions that are used for that operation. (add <uses-permission> tag in manifest file)
The Android system provides a set of permissions that allow you to view Android permissions, and in addition, Android will add some permission to the new version to view Android version information.
Of course, apps can also customize their own permission or permission that belong to the same signature that the developer uses. Defining a permission is to add a permission tag to the Menifest file.
<permission android:description= "string resource" android:icon= "drawable resource" android:label= " string resource " android:name=" string " android:permissiongroup=" string " android:protectionlevel=[" Normal "| "Dangerous" | " Signature "| "Signatureorsystem"]/>
Android:description: The description of permissions, generally two sentences, the first sentence describes the operation of this permission, the second sentence tells the user to grant the app this permission will bring the consequences
Android:label: A short description of the permissions
Android:name: A unique identifier for permissions, usually using the registration plus permission name
Android:permissiongroup: The name of the permission group to which the permission belongs
Android:protectionlevel: Level of authority,
Normal is the lowest level, the app that declares the sub-permission, the system will grant the second permission by default, will not prompt the user
The dangerous permission corresponds to a security risk, and the system will prompt the user when installing an app that declares such permissions
Signature permission indicates that the operation is only open for apps signed with the same certificate
Signatureorsystem is similar to signature, but adds a claim to the app that comes with the ROM
The Android:name property is required, and other optional, non-writable systems specify default values
The following experiment is done by specifying a broadcastreceiver permission
First created two App,app a, app B;
App A has registered a broadcastreceiver, app B sends a message
App A's menifest file:
<manifest xmlns:android= "http://schemas.android.com/apk/res/android" package= "Com.example.testbutton" Android: Versioncode= "1" android:versionname= "1.0" > <uses-sdk android:minsdkversion= "7" ANDROID:TARGETSD Kversion= "/> <!--claims rights--<permission android:name=" Com.example.testbutton.RECEIVE "/> <ap Plication android:icon= "@drawable/ic_launcher" android:label= "@string/app_name" Android:theme= "@style /apptheme "> <activity android:name=". Mainactivity "launchemode=" Singletask "android:configchanges=" Locale|orientation|keyboardhidden " android:screenorientation= "Portrait" android:theme= "@style/android:style/theme.notitlebar.fullscreen" & Gt <intent-filter> <action android:name= "Android.intent.action.MAIN"/> <categor Y android:name= "Android.intent.category.LAUNCHER"/> </Intent-filter> </activity> <!--register broadcast receiver and specify the permissions required to send the message to the current receiver--< Receiver Android:name= "Com.example.testbutton.TestButtonReceiver" android:permission= "com.example.t Estbutton. RECEIVE "> <intent-filter> <action android:name=" Com.test.action "/> & Lt;/intent-filter> </receiver> </application></manifest>
App B's menifest file contents
<manifest xmlns:android= "Http://schemas.android.com/apk/res/android" Package= "Com.example.testsender" android:versioncode= "1" android:versionname= "1.0" > <uses-sdk Andro id:minsdkversion= "7" android:targetsdkversion= "/>" <!--declaration using the specified permissions--<uses-permission Android : Name= "Com.example.testbutton.RECEIVE"/> <application android:icon= "@drawable/ic_launcher" Android : label= "@string/app_name" android:theme= "@style/apptheme" > <activity android:name= ". Mainactivity "android:label=" @string/title_activity_main "> <intent-filter> <action android:name= "Android.intent.action.MAIN"/> <category android:name= "Android.intent.catego Ry. LAUNCHER "/> </intent-filter> </activity> </application></manifest>
So that app B sends a message to app A, a can be received, if not in app B's menifest file to declare the use of the appropriate permissions, App B sends the message, a is not received.
In addition, you can also add android:protectionlevel= "signature" When declaring permissions in App B's Menifest file, specifying that app B can only receive messages sent by apps signed with the same certificate.
Android Custom Permissions (<permission> <uses-permission>)