Yêu cầu cấp quyền cho ứng dụng Android

Có thể bạn đã biết rằng kể từ phiên bản Android Marshmallow trở đi thì người dùng có quyền cho phép hoặc từ chối bất kỳ quyền nào trong mỗi ứng dụng Android khi ứng dụng đang chạy. Vậy làm sao để thông báo yêu cầu cấp quyền cho ứng dụng Android (Permission trong Android) khi ứng dụng khởi chạy.

Yêu cầu cấp quyền cho ứng dụng Android

Trong mỗi ứng dụng thì tùy vào loại tài nguyên cần sử dụng mà ứng dụng sẽ phải khai báo permission tương ứng trong tập tin AndroidManifest.xml. Vậy làm sao để thông báo yêu cầu cấp quyền cho ứng dụng Android (Permission trong Android) khi ứng dụng khởi chạy.

Bước 1: Xác định loại quyền cần sử dụng của ứng dụng Android của bạn.

Để khai báo quyền thì chúng ta sử dụng thẻ <user-permissions> nằm trong thẻ <manifest>

Ứng dụng Android phải yêu cầu quyền truy cập dữ liệu người dùng nhạy cảm (danh bạ, tin nhắn SMS…) cũng như các tính năng hệ thống nhất định (máy ảnh, internet…). Tùy thuộc vào tính năng mà hệ thống có thể cấp quyền tự động hoặc có thể nhắc người dùng phê duyệt yêu cầu.

Bước 2: Khai báo quyền tương ứng trong tập tin AndroidManifest.xml. Ví dụ trong ứng dụng Android của mình cần yêu cầu cấp quyền gởi tin nhắn, quyền đọc ghi dữ liệu, quyền mở máy ảnh thì mình sẽ khai báo các quyền này trong tập tin AndroidManifest.xml như sau:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.teamvietdev.android.permission">

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.SEND_SMS"/>
    <uses-permission android:name="android.permission.CAMERA"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Bước 3: Trong lớp MainActivity.java chúng ta sẽ thực hiện yêu cầu cấp quyền truy cập từ người dùng

package com.teamvietdev.android.permission;

import android.Manifest;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    private final int RECORD_REQUEST_CODE = 1;

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

        int permission_write_storage = ContextCompat.checkSelfPermission(this,
                Manifest.permission.WRITE_EXTERNAL_STORAGE);
        int permission_read_storage = ContextCompat.checkSelfPermission(this,
                Manifest.permission.READ_EXTERNAL_STORAGE);
        int permission_camera = ContextCompat.checkSelfPermission(this,
                Manifest.permission.CAMERA);
        int permission_sendsms = ContextCompat.checkSelfPermission(this,
                Manifest.permission.SEND_SMS);

        if (permission_write_storage != PackageManager.PERMISSION_GRANTED
                || permission_read_storage != PackageManager.PERMISSION_GRANTED
                || permission_camera != PackageManager.PERMISSION_GRANTED
                || permission_sendsms != PackageManager.PERMISSION_GRANTED) {
            makeRequest();
        }

    }

    private void makeRequest() {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA, Manifest.permission.VIBRATE,
                Manifest.permission.WRITE_EXTERNAL_STORAGE}, RECORD_REQUEST_CODE);
    }

}

Kết quả sau khi chạy đoạn mã chương trình trên:

Lời kết: Như vậy việc cấp quyền cho ứng dụng Android (Permission trong Android) tuy đơn giản nhưng giúp cho ứng dụng Android của bạn sử dụng hiệu quả hơn và hơn nữa người dùng cũng nắm được những thông tin mà mình cugn cấp có ảnh hưởng hay không. Ngoài ra bạn có thể xem thêm nhiều bài viết khác trong chủ đề lập trình Android tại Team Việt Dev.

(Tác giả: Team Việt Dev)

Bình luận