Permission là gì - tim hiểu về lập trình android

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Permission là gì - tim hiểu về lập trình android

Bài gửi by t11nguyen on 24/6/2017, 11:15

Hệ quản lý Android kiểm soát an ninh chính nó và thông tin riêng của quý khách bằng phương pháp chạy những vận 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 với tài nguyên riêng, ko chạm gì tới tài nguyên của hệ quản lý, ví như vận dụng muốn tiêu dùng tài nguyên bên ngoài Sandbox thì vận dụng phải xin permission – quyền tiêu dùng. Tùy thuộc vào mẫu tài nguyên mà vận dụng muốn truy vấn cập, hệ quản lý sẽ cấp quyền tiêu dùng tự động hoặc sẽ phải hỏi ý kiến của quý khách thì mới được tiêu dùng. hướng dẫn về bài [URL='https://vietpro.net.vn/lap-trinh-android']lập trình android cơ bản[/URL]

Khai báo Permission
Tùy vào mẫu tài nguyên cần tiêu dùng mà vận 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 mẫu dữ liệu với mức độ tây riêng tới mức nào mà hệ quản lý sẽ tự động cấp quyền hoặc phải xin ý kiến quý khách, chẳng hạn như quyền tiêu dùng đèn pin sẽ được cấp ngay, trong khi quyền truy vấn cập danh sách số điện thoại liên lạc sẽ phải hỏi ý kiến người dùng… phương pháp quý khách cấp quyền cũng khác nhau theo từng phiên bản Android, chẳng hạn như đối với phiên bản Android 5.1 trở về trước thì quý khách sẽ cấp quyền trong thời kỳ cài đặt vận dụng, còn ở phiên bản Android 6.0 trở lên thì quý khách sẽ cấp quyền lúc vận dụng đang chạy.

Xác định mẫu quyền cần dùng
thường nhật thì vận dụng sẽ cần tiêu dùng tới những mẫu dữ liệu mà bản thân nó không thể tự tạo ra được, hay những hành động với thể làm cho tác động tới hành vi của smartphone hoặc những vận dụng khác. chẳng hạn như quyền truy vấn cập Internet, quyền tiêu dùng Camera, quyền tắt/bật Wifi…

những quyền lại được chia làm cho rộng rãi cấp độ, trong ngừng thi côngĐây hai cấp độ cao nhất là bình thường (normal)nguy hiểm (dangerous). Quyền thường nhật là những quyền tiêu dùng tài nguyên mà ít với rủi ro đối với sự tây riêng 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 nhật với 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 nguy hiểm là quyền tiêu dùng những loại tài nguyên với liên quan tới sự tây riêng của người mua hoặc với thể tác động tới hệ quản lý và những vận 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 nguy hiểm với 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


vận dụng chỉ cần xin quyền để nó với thể tiêu dùng trực tiếp tài nguyên, ví như trong thời kỳ chạy mà vận dụng với tiêu dùng dữ liệu lấy từ một vận dụng khác thì chỉ với vận 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 tiêu 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 nguy hiểm.
Bạn với quan tới [URL='https://vietpro.net.vn/hoc-json']khái niệm về json[/URL] , xem tại đây

Xin quyền trong thời kỳ chạy
Đối với loại quyền nguy hiểm thì thời kỳ 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 vật dụng chạy Android phiên bản 5.1 trở xuống và vận dụng tiêu dùng API 22 trở xuống thì người mua sẽ phải tự tay cấp quyền trong thời kỳ cài đặt vận dụng, ví như ko cấp thì vận dụng sẽ ko được cài đặt.
  • Nếu vật dụng chạy Android 6.0 trở lên và vận dụng tiêu dùng API 23 trở lên thì vận dụng sẽ được cài nhưng lúc chạy thì vận dụng sẽ tuần tự xin từng quyền từ người mua, người mua với thể cấp quyền này, bỏ quyền kia và vận dụng sẽ vẫn chạy nhưng ngừng với 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 với thể lấy lại quyền của vận dụng, ví dụ như chúng ta với một vận dụng cần tiêu dùng camera, và hôm nay người mua đã cho phép quyền tiêu dùng camera thì ko với tức thị ngày hôm sau vận dụng vẫn còn với quyền ngừng thi côngĐây, vì thế trước lúc chạy chúng ta nên rà soát xem vận dụng của chúng ta với quyền hay ko đã.

Ví dụ
Chúng ta viết một vận dụng cần với 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 với 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 vận dụng đã được cấp quyền ngừng thi côngĐây rồi hay chưa, lớp này được khái niệm trong thư viện support v4. Chúng ta sẽ Tìm hiểu về những thư viện support này sau.

ActivityCompat.requestPermissions(this,
new String[]Manifest.permission.READ_CONTACTS,
READ_CONTACTS_CODE);
ví như quyền chưa được cấp thì chúng ta xin quyền bằng phương pháp 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 ví 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, vì thế những mảng trả về chỉ với một phần tử, chúng ta rà soát xem kết quả xin quyền READ_CONTACTS với thành công hay ko bằng phương pháp so sánh với hằng số PERMISSION_GRANTED. ví như với 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.
Tìm hiểu bài [URL='https://vietpro.net.vn/hoc-lap-trinh-web-php-co-ban']học lập trình online[/URL]
ví như vận dụng đã từng bị từ khước 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”, ví như người mua check vào thì vận dụng sẽ ko bao giờ với thể xin quyền được nữa.

t11nguyen
Binh Nhất
Binh Nhất

Tổng số bài gửi : 36
Tuổi : 28
Đăng ký ngày : 22/04/2017

Xem lý lịch thành viên

Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang

- Similar topics

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