91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

android permission權限撤銷

小樊
81
2024-11-21 14:50:41
欄目: 編程語言

在Android中,撤銷權限通常是指在運行時動態地更改應用程序的權限。以下是一些步驟和代碼示例,說明如何撤銷應用程序的權限。

1. 檢查權限是否已被授予

首先,你需要檢查應用程序是否已經獲得了所需的權限。你可以使用ContextCompat.checkSelfPermission方法來檢查權限狀態。

import androidx.core.content.ContextCompat;

public boolean hasPermission(Context context, String permission) {
    return ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED;
}

2. 請求權限(如果尚未授予)

如果權限尚未被授予,你可以使用ActivityCompat.requestPermissions方法來請求權限。

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

public class MainActivity extends AppCompatActivity {

    private static final int PERMISSION_REQUEST_CODE = 123;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String permission = Manifest.permission.WRITE_EXTERNAL_STORAGE;
        if (!hasPermission(this, permission)) {
            ActivityCompat.requestPermissions(this, new String[]{permission}, PERMISSION_REQUEST_CODE);
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == PERMISSION_REQUEST_CODE) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // Permission granted
            } else {
                // Permission denied
            }
        }
    }
}

3. 撤銷權限

要撤銷權限,你可以使用PackageManagerrevokePermission方法。請注意,這種方法通常需要管理員權限,并且只能在系統應用程序中使用。

import android.content.pm.PackageManager;

public boolean revokePermission(Context context, String permission) {
    PackageManager packageManager = context.getPackageManager();
    return packageManager.revokePermission(permission);
}

4. 注意事項

  • 管理員權限:撤銷權限通常需要管理員權限,因此你可能需要在AndroidManifest.xml中添加android:requestLegacyExternalStorage="true",或者在運行時請求管理員權限。
  • 系統應用程序:普通應用程序通常無法撤銷其他應用程序的權限,只有系統應用程序才能執行此操作。

示例代碼

以下是一個完整的示例,展示了如何檢查、請求和撤銷權限。

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.content.pm.PackageManager;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    private static final int PERMISSION_REQUEST_CODE = 123;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String permission = Manifest.permission.WRITE_EXTERNAL_STORAGE;
        if (!hasPermission(this, permission)) {
            ActivityCompat.requestPermissions(this, new String[]{permission}, PERMISSION_REQUEST_CODE);
        } else {
            // Permission already granted
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == PERMISSION_REQUEST_CODE) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // Permission granted
            } else {
                // Permission denied
            }
        }
    }

    public boolean hasPermission(Context context, String permission) {
        return ContextCompat.checkSelfPermission(context, permission) == PackageManager.PERMISSION_GRANTED;
    }

    public boolean revokePermission(Context context, String permission) {
        PackageManager packageManager = context.getPackageManager();
        return packageManager.revokePermission(permission);
    }
}

請注意,撤銷權限需要管理員權限,并且只能在系統應用程序中使用。普通應用程序通常無法撤銷其他應用程序的權限。

0
韩城市| 光山县| 伊宁市| 调兵山市| 融水| 定结县| 同江市| 碌曲县| 杭州市| 泰顺县| 吴江市| 鄄城县| 涞源县| 海盐县| 清镇市| 高淳县| 剑阁县| 沁水县| 清新县| 江川县| 南宫市| 秦皇岛市| 普宁市| 富顺县| 南陵县| 九江县| 遵义市| 水富县| 汝州市| 崇明县| 苏尼特右旗| 博湖县| 高台县| 桃江县| 泰来县| 德令哈市| 阿巴嘎旗| 永年县| 大新县| 余姚市| 普格县|