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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android自定义权限

發布時間:2023/12/14 Android 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android自定义权限 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??????? Android應用程序可以自定義屬于自己的權限或者屬于開發者使用的同一個簽名的權限。自定義權限的步驟如下:

一、在AndroidManifest文件中,添加一個permission標簽:

<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:name :權限的唯一標識,一般使用包名+權限名;
android:permissionGroup: 權限所屬權限組的名稱;
android:protectionLevel: 權限的等級:
????????normal 是最低的等級,聲明此權限的app,系統會默認授予此權限,不會提示用戶;
????????dangerous? 權限對應的操作有安全風險,系統在安裝聲明此類權限的app時會提示用戶;
????????signature? 權限表明的操作只針對使用同一個證書簽名的app開放;
????????signatureOrSystem? 與signature類似,只是增加了rom中自帶的app的聲明。

android:name 屬性是必須的,其他的可選,未寫的系統會指定默認值。

二、具體使用范例:

1. 創建一個工程CustomPermission,新建兩個活動,主活動對應的布局文件如下

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="OneProject"android:textSize="12pt"android:gravity="center"android:layout_centerInParent="true" /><Buttonandroid:id="@+id/intent_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Intent"android:textSize="10pt"android:layout_alignParentRight="true"android:layout_alignParentBottom="true"/> </RelativeLayout>

2. 第二個活動對應的布局文件如下:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="添加權限才能看到我!!!"android:layout_gravity="center_vertical"android:gravity="center"android:textSize="12pt"/></LinearLayout>

3. 在配置文件中自定義權限,并對第二個活動添加權限:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.custompermission"><permissionandroid:name="com.example.custompermission.get2view"android:protectionLevel="signature"/><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.CustomPermission"><activityandroid:name=".MainActivity2"android:permission="com.example.custompermission.get2view"android:exported="true"><intent-filter><action android:name="com.example.custompermission.get2view" /><category android:name="android.intent.category.DEFAULT" /></intent-filter></activity><activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

4. 主活動代碼如下:

package com.example.custompermission;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button;public class MainActivity extends AppCompatActivity {private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (Button) findViewById(R.id.intent_button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent();intent.setAction("com.example.custompermission.get2view");startActivity(intent);}});} }

運行工程CustomPermission:在主活動點擊INTENT按鈕,跳轉第二個活動可以正常跳轉。

??????

?結論:對于同一個工程,活動之間進行跳轉,即便不添加權限申請也可以。

5. 創建另一個工程UsePermission,主活動里放置一個按鈕,用于跳轉CustomPermission工程的第二個活動,對應布局文件如下:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="TwoProject"android:textSize="12pt"android:gravity="center"android:layout_centerInParent="true"/><Buttonandroid:id="@+id/intent_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Intent"android:textSize="10pt"android:layout_alignParentRight="true"/></RelativeLayout>

?6. 主活動代碼如下:

package com.example.usepermission;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button;public class MainActivity extends AppCompatActivity {private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (Button) findViewById(R.id.intent_button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent();intent.setAction("com.example.custompermission.get2view");startActivity(intent);}});} }

?(1)不在配置文件里申請訪問CustomPermission工程的第二個活動的權限,點擊跳轉按鈕Logcat窗口報錯:

java.lang.SecurityException: Permission Denial: starting Intent

(2)在配置文件里申請訪問權限:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.usepermission"><uses-permission android:name="com.example.custompermission.get2view"/><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.UsePermission"><activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

運行程序,點擊跳轉按鈕的效果如下:

? ?

?

?

?

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的Android自定义权限的全部內容,希望文章能夠幫你解決所遇到的問題。

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