2013-04-01 26 views
7

Tôi đang làm việc trên một ứng dụng MDM (Thiết bị di động) cho Android, nhưng tôi có một vấn đề lớn và người dùng có thể tắt ứng dụng của tôi từ trong cài đặt> bảo mật> quản trị viên thiết bị. Điều duy nhất tôi có thể làm, là hiển thị thông báo cảnh báo bằng cách ghi đè phương thức onDisableRequested(...) trong lớp con DeviceAdminReceiver của tôi, nhưng tôi thực sự muốn ngăn người dùng vô hiệu hóa hoàn toàn ứng dụng quản trị của mình.Làm cách nào để ngăn người dùng tắt ứng dụng quản trị thiết bị của tôi, thông qua menu cài đặt?

Tôi đã cố gắng ghi đè phương thức onReceive(...), do đó không có gì xảy ra khi các hành động ACTION_DEVICE_ADMIN_DISABLE_REQUESTED và ACTION_DEVICE_ADMIN_DISABLED được hệ thống phát sóng, nhưng cho đến nay nó vẫn chưa hoạt động. Rõ ràng một số thành phần khác đang xử lý các hành động đó trước khi chúng đến phương thức onReceive(...) của tôi và tôi không biết tại sao. Tôi muốn có thể hiển thị hộp thoại tùy chỉnh của riêng mình cho biết rằng người dùng không thể vô hiệu hóa ứng dụng quản trị viên từ phần này và thậm chí có thể yêu cầu người dùng đặt mật khẩu quản trị để thực hiện.

public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 
     if (ACTION_PASSWORD_CHANGED.equals(action)) { 
      onPasswordChanged(context, intent); 
     } else if (ACTION_PASSWORD_FAILED.equals(action)) { 
      onPasswordFailed(context, intent); 
     } else if (ACTION_PASSWORD_SUCCEEDED.equals(action)) { 
      onPasswordSucceeded(context, intent); 
     } else if (ACTION_DEVICE_ADMIN_ENABLED.equals(action)) { 
      onEnabled(context, intent); 
     } else if (ACTION_DEVICE_ADMIN_DISABLE_REQUESTED.equals(action)) { 

     } else if (ACTION_DEVICE_ADMIN_DISABLED.equals(action)) { 

     } else if (ACTION_PASSWORD_EXPIRING.equals(action)) { 
      onPasswordExpiring(context, intent); 
     } 
    } 

Tôi cần trợ giúp để giải quyết vấn đề này.

Cảm ơn,

+1

Tôi không nghĩ bạn được phép ngăn người dùng vô hiệu quyền truy cập quản trị cho ứng dụng của bạn. – FoamyGuy

+0

Ok, tôi đã ngăn người dùng tắt ứng dụng của mình với tư cách quản trị viên nhưng sử dụng Samsung SDK (Bạn cần phải là đối tác), Ứng dụng này chỉ hoạt động trên Thiết bị Samsung, trong các thiết bị khác bạn không thể tránh người dùng vô hiệu hóa ứng dụng của bạn với tư cách là quản trị viên – shontauro

Trả lời

3

Tôi đồng ý với FoamyGuy, bạn không được phép để ngăn chặn việc vô hiệu hóa admin. Nếu không, bạn không thể gỡ cài đặt ứng dụng của mình.

Nói chung người dùng cấp cho một số quyền quản trị thiết bị ứng dụng và có thể xóa các quyền này bất kỳ lúc nào.

Mọi chương trình phát sóng chỉ là thông báo, bạn không thể xử lý thông báo và ngăn một số hành động xảy ra. Hệ thống chỉ nói để nghe các ứng dụng có điều gì đó đang diễn ra.

Ngoài ra, đọc:

How to wipe Android device when device admin is deactivated?

4

Không có cách nào để ngăn chặn người dùng từ việc vô hiệu hóa, và đó là quyền của mình.

Nhưng để có được bảo rằng người dùng mình là thực sự loại bỏ các đặc quyền admin, khóa điện thoại trong onDisableRequested với mật khẩu của mình và trở về một cái gì đó giống như "Ai đó cố gắng để vô hiệu hóa tính năng quản trị ứng dụng này. Là nó, bạn và bạn có chắc ? ".

Bây giờ nếu ai đó không phải là người dùng thực sự cố gắng vô hiệu hóa nó, anh ấy phải nhập mật khẩu trước khi tiếp tục.

+0

hãy giải thích câu trả lời của bạn nhiều hơn, tôi cần triển khai nó, Chính xác như bạn đã nêu trong câu trả lời của mình, Làm thế nào tôi có thể khóa thiết bị trong onDisableRequested, Bởi vì khi onDisableRequested trả về chính sách quản trị sẽ bị tắt. –

+1

onDisableRequested, như tên được đề xuất xảy ra trước khi quản trị viên bị vô hiệu hóa để ứng dụng của bạn có thể khóa thiết bị (nếu có quyền này ở vị trí đầu tiên). btw, onDisabled xảy ra sau khi quản trị viên bị vô hiệu hóa. @AhmadRaza – Ali

+1

AppLock và Android ứng dụng kiểm soát cha mẹ cho thấy hoạt động yêu cầu mật khẩu, Các hoạt động ứng dụng mật khẩu hiển thị trước khi onDisabledRequested(), Bạn có bất kỳ ý tưởng, làm thế nào các ứng dụng này làm việc đó? –

4

Bạn có thể thực hiện việc này từ Android 5 Lollipop bằng chế độ chủ sở hữu thiết bị mới. Sau đó, tùy chọn Device-Administrator trong màu xám và người dùng không thể vô hiệu hóa nó, do đó không gỡ cài đặt ứng dụng quản trị thiết bị. Tuy nhiên lưu ý rằng việc cài đặt một ứng dụng chủ sở hữu thiết bị không phải là dễ dàng, nó phải được thực hiện tại thời gian cung cấp với NFC, hoặc từ một máy tính với adb (tiện dụng để thử nghiệm nhưng không phải để triển khai), hoặc với MDM là trường hợp của bạn ...

0

Không phải là cách hay để làm điều này, nhưng ở đây một ý tưởng: Khi bạn nhận được cuộc gọi lại ACTION_DEVICE_ADMIN_DISABLE_REQUESTED, hãy xóa ứng dụng cài đặt. (Tìm kiếm kẻ giết nhiệm vụ để xem cách)

Và đảm bảo bạn không giết cài đặt ứng dụng sau khi người dùng nhập mật khẩu.

Nếu ứng dụng cài đặt biến mất, người dùng không thể nhấp vào nút tắt.