Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 3 của 3
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    [Android] Screen Lock tutorial ( Sử dụng quyền admin của device )

    Hi các bạn,
    Mình viết tut này giới thiệu các bạn kiến thức mới, làm sao để một ứng dụng có thể sử dụng được chức năng của hệ thống, mà bình thường không được phép can thiệp? Như các bạn đã tìm hiểu trong cấu trúc của Android thì việc này chỉ có thể làm khi người dùng cho phép ứng dụng đó thực thi quyền admin đó.
    Bài này mình sẽ hướng dẫn các bạn làm 1 ứng dụng có chức năng tương tự như app sau:
    https://play.google.com/store/apps/d...reen.off&hl=vi

    Mã:
    Project name: ScreenLockDemo
    Version: 1.0
    Environment: Eclipse
    Hướng giải quyết yêu cầu:
    1: Tạo file .xml để đưa ra các quyền cần được active từ phía người dùng cho ứng dụng ( my_admin.xml)
    2: Tạo 1 receiver để nhận phản hồi.
    3: Code để thực thi sau khi nhận được quyền từ người dùng ( Lock Screen! [IMG]images/smilies/1.gif[/IMG] )


    1: Tạo file .xml:
    File my_admin.xml ( Tạo thư mục xml trong res và đặt file vào đó):
    Mã:
    <device-admin xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <uses-policies>
            <force-lock />
        </uses-policies>
    
    </device-admin>
    Trong file này chúng ta chỉ định rằng sẽ chỉ yêu cầu quyền lock máy.

    2: Thêm vào trong file manifest receiver :
    Mã:
    <receiver
                android:name=".ReceiverClass"
                android:permission="android.permission.BIND_DEVICE_ADMIN" >
                <meta-data
                    android:name="android.app.device_admin"
                    android:resource="@xml/my_admin" />
    
                <intent-filter>
                    <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
                </intent-filter>
            </receiver>
    Ở trên .Receiver; }[/CODE]Ở đây đơn giản là không xử lý gì cả. [IMG]images/smilies/smile.png[/IMG]

    3: Code chính thực thi:
    Để biết được ứng dụng đã được request quyền admin ( cho chức năng mình cần ) chưa, các bạn sử dụng class : DevicePolicyManager để kiểm tra.


    Mã:
    devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);if (!devicePolicyManager.isAdminActive(adminComponent)) {             // Nếu chưa thì cần phải start màn hình yêu cầu user cấp quyền.Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);                    intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,                            adminComponent);                    startActivityForResult(intent, REQUEST_ENABLE);}else{      // Nếu đã có quyền rồi thì     // xử lý lock screen.}
    Biến: adminComponent là instance của class ComponentName

    Mã:
    adminComponent = new ComponentName(getBaseContext(),                        ReceiverClass.class);
    Vì rằng chúng ta đã khai báo 1 receiver trong Manifest của ứng dụng, vì thế đến đây chúng ta sẽ gọi nó.
    Nhận về action từ user ( Đồng ý cấp quyền hay không cấp quyền cho ứng dụng )

    Mã:
        @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if (requestCode == REQUEST_ENABLE) {            super.onActivityResult(requestCode, resultCode, data);        } else {            showToast("User do not accept!");        }    }
    Vậy là xong rồi, các bạn đã biết được cách mà 1 ứng dụng yêu cầu sử dụng quyền admin để thực hiện các tác vụ sâu của thiết bị.
    Source code mình đính kèm.
    Link tham khảo:
    http://developer.android.com/guide/t...ice-admin.html
    Đây là hình ảnh của em nó, very simple.


    Chúc các bạn code vui vẻ!

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Các bạn chú ý là vì đây là ứng dụng có sử dụng quyền admin nên để gỡ khỏi máy, các bạn cần phải vào settings-> security -> select device administrators ( hoặc Device administrators ) và bỏ chọn quyền admin cho ứng dụng đó đi. Sau đó gỡ bình thường.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Cảm ơn bạn rất nhiều, mình đang cần tìm tut về cái này [IMG]images/smilies/biggrin.png[/IMG]

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •