Diễn đàn rao vặt Tuổi trẻ
Hướng dẫn khai báo permission trên android FfWzt02
Diễn đàn rao vặt Tuổi trẻ
Hướng dẫn khai báo permission trên android FfWzt02
 


#1

24.06.17 10:13

avatar

tuan11nguyen

Thành viên gắn bó
0988485689 https://www.facebook.com/
Thành viên gắn bó
Hệ quản lý Android bảo vệ chính nó và thông tin riêng của người mua bằng cách thức chạy những ứng dụng Android trên một môi trường ảo riêng (thuật ngữ gọi là Sandbox), môi trường ảo này sở hữu tài nguyên riêng, ko đụng chạm gì tới tài nguyên của hệ quản lý, nếu như ứng dụng muốn sử dụng tài nguyên bên ngoài Sandbox thì ứng dụng phải xin permission – quyền sử dụng. Tùy thuộc vào loại tài nguyên mà ứng dụng muốn truy nã cập, hệ quản lý sẽ cấp quyền sử dụng tự động hoặc sẽ phải hỏi quan niệm của người mua thì mới được sử dụng. hướng dẫn về bài học lập trình android online
Khai báo Permission
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 cho thích hợp. những permission sẽ được khai báo trong file AndroidManifest.xml. Tùy vào loại dữ liệu sở hữu mức độ riêng tư tới mức nào mà hệ quản lý sẽ tự động cấp quyền hoặc phải xin quan niệm người mua, chẳng hạn như quyền sử dụng đèn pin sẽ được cấp ngay, trong khi quyền truy nã cập danh sách số điện thoại liên lạc sẽ phải hỏi quan niệm người dùng… cách thức người mua cấp quyền cũng khác nhau theo từng phiên bản Android, chẳng hạn như đối sở hữu phiên bản Android 5.1 trở về trước thì người mua sẽ cấp quyền trong quá trình cài đặt ứng dụng, còn ở phiên bản Android 6.0 trở lên thì người mua sẽ cấp quyền lúc ứng dụng đang chạy.
Xác định loại quyền cần dùng
thường ngày thì ứng dụng sẽ cần sử dụng tới những loại dữ liệu mà bản thân nó không thể tự tạo ra được, hay những hành động sở hữu thể làm tác động tới hành vi của smartphone hoặc những ứng dụng khác. chẳng hạn như quyền truy nã cập Internet, quyền sử dụng Camera, quyền tắt/bật Wifi…
những quyền lại được chia làm phổ quát cấp độ, trong Đó hai cấp độ cao nhất là bình thường (normal)nguy hiểm (dangerous). Quyền thường ngày là những quyền sử dụng tài nguyên mà ít sở hữu rủi ro đối sở hữu sự riêng tư của người mua, loại quyền này sẽ được hệ quản lý tự động cấp. Dưới đây là danh sách những quyền thường ngày sở hữu trong phiên bản API 23:


  • ACCESS_LOCATION_EXTRA_COMMANDS
  • ACCESS_NETWORK_STATE
  • ACCESS_NOTIFICATION_POLICY
  • ACCESS_WIFI_STATE
  • BLUETOOTH
  • BLUETOOTH_ADMIN
  • BROADCAST_STICKY
  • CHANGE_NETWORK_STATE
  • CHANGE_WIFI_MULTICAST_STATE
  • CHANGE_WIFI_STATE
  • DISABLE_KEYGUARD
  • EXPAND_STATUS_BAR
  • GET_PACKAGE_SIZE
  • INSTALL_SHORTCUT
  • INTERNET
  • KILL_BACKGROUND_PROCESSES
  • MODIFY_AUDIO_SETTINGS
  • NFC


    • SET_ALARM
    • SET_TIME_ZONE
    • SET_WALLPAPER
    • SET_WALLPAPER_HINTS
    • TRANSMIT_IR
    • UNINSTALL_SHORTCUT
    • USE_FINGERPRINT
    • VIBRATE
    • WAKE_LOCK
    • WRITE_SYNC_SETTINGS


  • READ_SYNC_SETTINGS
  • READ_SYNC_STATS
  • RECEIVE_BOOT_COMPLETED
  • REORDER_TASKS
  • REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
  • REQUEST_INSTALL_PACKAGES

Quyền nghiêm trọng là quyền sử dụng những loại tài nguyên sở hữu can hệ tới sự riêng tư của người mua hoặc sở hữu thể tác động tới hệ quản lý và những ứng dụng khác. loại quyền này cần được sự cho phép của người mua. Dưới đây là danh sách những quyền nghiêm trọng sở hữu trong phiên bản API 23:


  • READ_CALENDAR
  • WRITE_CALENDAR
  • CAMERA
  • READ_CONTACTS
  • WRITE_CONTACTS
  • GET_ACCOUNTS
  • ACCESS_FINE_LOCATION
  • USE_SIP
  • PROCESS_OUTGOING_CALLS
  • BODY_SENSORS
  • SEND_SMS
  • RECEIVE_SMS
  • READ_SMS
  • RECEIVE_WAP_PUSH
  • RECEIVE_MMS
  • READ_EXTERNAL_STORAGE
  • WRITE_EXTERNAL_STORAGE


ứng dụng chỉ cần xin quyền để nó sở hữu thể sử dụng trực tiếp tài nguyên, nếu như trong quá trình chạy mà ứng dụng sở hữu sử dụng dữ liệu lấy từ một ứng dụng khác thì chỉ sở hữu ứng dụng khác mới cần xin quyền.
Khai báo trong file AndroidManifest.xml
Để khai báo quyền thì chúng ta sử dụng thẻ trong thẻ . Ví dụ:


Ở đây chúng ta xin quyền được gửi tin SMS. Đây là loại quyền nghiêm trọng.
Bạn sở hữu quan tới xem thêm , xem tại đây
Xin quyền trong quá trình chạy
Đối sở hữu loại quyền nghiêm trọng thì quá trình xin quyền sẽ khác ở từng phiên bản hệ quản lý và từng phiên bản SDK. Ví dụ:


  • Nếu trang bị chạy Android phiên bản 5.1 trở xuống và ứng dụng sử dụng API 22 trở xuống thì người mua sẽ phải tự tay cấp quyền trong quá trình cài đặt ứng dụng, nếu như ko cấp thì ứng dụng sẽ ko được cài đặt.
  • Nếu trang bị chạy Android 6.0 trở lên và ứng dụng sử dụng API 23 trở lên thì ứng dụng sẽ được cài nhưng lúc chạy thì ứng dụng sẽ tuần tự xin từng quyền từ người mua, người mua sở hữu thể cấp quyền này, bỏ quyền kia và ứng dụng sẽ vẫn chạy nhưng giới hạn sở hữu những quyền ko được cấp.

tính từ lúc phiên bản Android 6.0 (API 23), người mua sở hữu thể lấy lại quyền của ứng dụng, tỉ dụ như chúng ta sở hữu một ứng dụng cần sử dụng camera, và hôm nay người mua đã cho phép quyền sử dụng camera thì ko sở hữu tức là ngày hôm sau ứng dụng vẫn còn sở hữu quyền Đó, thành ra trước lúc chạy chúng ta nên rà soát xem ứng dụng của chúng ta sở hữu quyền hay ko đã.
Ví dụ
Chúng ta viết một ứng dụng cần sở hữu quyền đọc danh sách số điện thoại liên lạc.
MainActivity.java

import android.Manifest;
import android.content.pm.PackageManager;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.widget.Toast;
Trong file MainActivity.java chúng ta thực hiện những công việc xin quyền đọc danh sách liên lạc.
một
private static final int READ_CONTACTS_CODE = 1;
Hằng số READ_CONTACTS_CODE là một hằng số do chúng ta tự khái niệm, hằng số này sở hữu tác dụng giống như ID để phân biệt những lần xin quyền.

if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED)
Phương thức checkSelfPermission() của lớp android.support.v4.ContextCompat sẽ rà soát xem ứng dụng đã được cấp quyền Đó rồi hay chưa, lớp này được khái niệm trong thư viện support v4. Chúng ta sẽ Phân tích về những thư viện support này sau.
ActivityCompat.requestPermissions(this,
new String[]Manifest.permission.READ_CONTACTS,
READ_CONTACTS_CODE);
nếu như quyền chưa được cấp thì chúng ta xin quyền bằng cách thức gọi phương thức ActivityCompat.requestPermission(), phương thức này nhận vào đối tượng Activity hiện tại, danh sách những quyền trong một mảng String và ID mà chúng ta đã khái niệm ở trên, kết quả trả về là PackageManager.PERMISSION_GRANTED nếu như được hài lòng, trái lại là PackageManager.PERMISSION_DENIED.

Phương thức requestPermission() sẽ hiển thị một hộp thoại xin cấp quyền cho người mua, kết quả trả về sẽ được truyền vào lời gọi phương thức onRequestPermission(), phương thức này nhận ID của quyền được xin, danh sách những quyền trong mảng permissions và danh sách kết quả của từng quyền trong mảng grantResults.



Ở đây chúng ta chỉ xin cấp một quyền là READ_CONTACTS, thành ra những mảng trả về chỉ sở hữu một phần tử, chúng ta rà soát xem kết quả xin quyền READ_CONTACTS sở hữu thành công hay ko bằng cách thức so sánh sở hữu hằng số PERMISSION_GRANTED. nếu như sở hữu thì hiện một câu thông tin thành công, trái lại thì báo thất bại.
Phân tích bài học php nâng cao
nếu như ứng dụng đã từng bị từ chối cấp quyền bởi người mua thì những lần xin quyền tiếp theo hộp thoại sẽ hiện một checkbox đề “Never ask again”, nếu như người mua check vào thì ứng dụng sẽ ko bao giờ sở hữu thể xin quyền được nữa.

Quyền hạn của bạn

   
Bạn không có quyền trả lời bài viết