Quyền truy cập hệ thống trên các ứng dụng Android

(ZmikiSoft.com) – Quyền truy cập hệ thống trên các ứng dụng Android.
Android là hệ điều hành nguồn mở chạy trên các thiết bị di động, Android là hệ điều hành được phát triển từ nhân của hệ điều hành nguồn mở Linux. Do đó Android có những tính chất đặc thù của hệ điều hành Linux. Điều đặc thù lớn nhất là Android xem tất cả mọi thứ trên thiết bị là system file ( nghĩa là file hệ thống ), và để có thể truy cập vào các chức năng phần cứng ( mà Android hiểu là file ) thì cần phải cấp quyền cho ứng dụng. Ví dụ để ứng dụng của bạn có thể mở được camera chụp ảnh, hoặc bật bluetooth để kết nối thiết bị khác thì cần phải cấp quyền cho ứng dụng để hệ điều hành sẽ cấp quyền truy cập file hệ thống cho ứng dụng khi chạy.

Để cấp quyền cho ứng dụng chúng ta khai báo các quyền này vào thẻ trong file Manifest của ứng dụng.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.app.myapp" >
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    ...
</manifest>

Một số quyền của ứng dụng có thể sử dụng

Permission Group Permissions
CALENDAR
  • READ_CALENDAR
  • WRITE_CALENDAR
CAMERA
  • CAMERA
CONTACTS
  • READ_CONTACTS
  • WRITE_CONTACTS
  • GET_ACCOUNTS
LOCATION
  • ACCESS_FINE_LOCATION
  • ACCESS_COARSE_LOCATION
MICROPHONE
  • RECORD_AUDIO
PHONE
  • READ_PHONE_STATE
  • CALL_PHONE
  • READ_CALL_LOG
  • WRITE_CALL_LOG
  • ADD_VOICEMAIL
  • USE_SIP
  • PROCESS_OUTGOING_CALLS
SENSORS
  • BODY_SENSORS
SMS
  • SEND_SMS
  • RECEIVE_SMS
  • READ_SMS
  • RECEIVE_WAP_PUSH
  • RECEIVE_MMS
STORAGE
  • READ_EXTERNAL_STORAGE
  • WRITE_EXTERNAL_STORAGE

 

Quyền truy cập của ứng dụng theo các phiên bản Android sẽ có phần khác nhau, điều này Android developer cần phải biết để có thể xây dựng ứng dụng của mình để tương thích tốt nhất với tối đa thiết bị và hệ điều hành.

Cụ thể:

  • Nếu ứng dụng của bạn chạy trên hệ điều hành Android 6.0 trở lên ( API 23 trở lên ) thì khi chạy ứng dụng sẽ yêu cầu cấp quyền từ người dùng, trong code ứng dụng các Android developer cần xử lý phần này để ứng dụng có thể chạy được khi người dùng cấp quyền, nếu Android developer không xử lý để hỗ trợ Android 6.0 trở lên thì khi chạy ứng dụng có thể bị crash không chạy được

 

  • Nếu ứng dụng của bạn chạy trên hệ điều hành Android 5.1 trở xuống (API 22 trở xuống ) thì khi cài đặt ứng dụng sẽ yêu cầu cấp quyền khi cài đặt ứng dụng. Thông thường người dung chỉ có thể cài đặt được khi đồng ý cấp quyền cho ứng dụng, đây là vấn đề mà ở các phiên bản từ API 23 trở lên Google đã nâng cấp để phù hợp hơn, an toàn hơn với người dùng.

Như vậy khi xây dựng các ứng dụng Android có yêu cầu về quyền truy cập file hệ thống thì chúng ta ngoài việc khai báo mặc định trong file Manifest như trước đây, từ Android 6.0 trở đi chúng ta cần xử lý thêm một phần code kiểm tra của hệ thống, một ví dụ về yêu cầu quyền truy cập cuộc gọi như bên dưới:

  • Kiểm tra
if (Build.VERSION.SDK_INT >= 23) {
   if (activity.checkSelfPermission(Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
      ActivityCompat.requestPermissions(
            activity,
            new String[]{Manifest.permission.CALL_PHONE},REQUEST_CALL_PHONE);
      return false;
   } else {
      return true;
   }
} else { //permission is automatically granted on sdk<23 upon installation
   Log.d("abc", "Permission is granted");
   return true;
}


  • Thực hiện tác vụ khi thành công hoặc bị từ chối từ người dùng
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
   super.onRequestPermissionsResult(requestCode, permissions, grantResults);
   if (requestCode == GlobalVariable.REQUEST_CALL_PHONE) {
      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
         //call
         callPhone(PHONE_NUMBER);
      } else {
         
      }
   }
}

Khóa học lập trình Android
Khóa học lập trình Java
Khóa học lập trình iOS
Khóa học lập trình Objective-C/Swift