2013-09-23 43 views
10

Tôi đang sử dụng Nexus 7 được cập nhật thành 4.3. Tôi có một ứng dụng yêu cầu quyền Quản trị thiết bị đối với Khóa/Xóa thiết bị. Tôi đã cấp cho Quản trị viên thiết bị quyền đối với đơn đăng ký của tôi trên Hồ sơ chủ sở hữu. Vì vậy, khi tôi chuyển sang hồ sơ người dùng khác, tôi có thể xem ứng dụng của mình trong danh sách ứng dụng Quản trị thiết bị. Tuy nhiên, khi tôi đưa ra lệnh Khóa trên hồ sơ người dùng không phải Chủ sở hữu này, tôi nhận ngoại lệ là "java.lang.SecurityException: Không có quản trị viên hoạt động do uid XXXXXX sở hữu".Android 4.3 DeviceAdmin error for non owner profile

Phương thức DevicePolicyManager isActiveAdmin() cũng trả về true trên hồ sơ này nhưng vẫn không thực hiện được thao tác và treo ứng dụng.

Tôi giả sử rằng khi quản trị viên thiết bị được đặt cho hồ sơ người dùng Chủ sở hữu, nó sẽ tự động được áp dụng cho tất cả hồ sơ người dùng khác.Bất cứ ý tưởng thì tại sao điều này lại xảy ra? Ngoài ra, có bất kỳ tài liệu nào nêu ra về ứng dụng của tôi cần xử lý những gì để xử lý nhiều hồ sơ người dùng trong trường hợp ứng dụng của tôi yêu cầu quyền quản trị thiết bị

+1

"Tôi giả sử rằng một khi quản trị viên thiết bị được đặt cho hồ sơ người dùng Chủ sở hữu, nó sẽ tự động áp dụng cho tất cả hồ sơ người dùng khác" - tôi chắc chắn sẽ không giả định điều đó. Tôi cho rằng các cấu hình khác, đặc biệt là các cấu hình giới hạn, không có khả năng làm việc với các quản trị viên thiết bị. Điều đó đang được nói, tôi không biết bất kỳ tài liệu nào trong không gian này. – CommonsWare

+0

những gì tôi nói là dựa trên quan sát trên Nexus 7 của tôi. Tôi sẽ kiểm tra việc ép buộc DeviceAdmin trên các hồ sơ khác và cập nhật tại đây. –

+0

Thử gỡ cài đặt ứng dụng và cài đặt lại gói ứng dụng trên tài khoản người dùng đó rồi thêm nó làm quản trị viên thiết bị và khởi chạy ứng dụng. – hichris123

Trả lời

8

Bạn đã đặt trong device_admin_sample.xml chính sách quản trị nào tuân thủ Ứng dụng của bạn hành vi mong đợi?

Đặt paramenters admin như

android:label="@string/enterprise_device_admin" 
     android:permission="android.permission.BIND_DEVICE_ADMIN"> 
    android:resource="@xml/enterprise_device_admin" /> 

Đây là một nội dung đặc trưng cho file device_admin_sample.xml của bạn:

<activity android:name=".app.DeviceAdminSample" 
     android:label="@string/activity_sample_device_admin"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.SAMPLE_CODE" /> 
    </intent-filter> 
</activity> 
<receiver android:name=".app.DeviceAdminSample$DeviceAdminSampleReceiver" 
    android:label="@string/sample_device_admin" 
    android:description="@string/sample_device_admin_description" 
    android:permission="android.permission.BIND_DEVICE_ADMIN"> 
    <meta-data android:name="android.app.device_admin" 
     android:resource="@xml/device_admin_sample" /> 
    <intent-filter> 
     <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 
    </intent-filter> 
</receiver> 

Đọc thêm với hướng dẫn từng bước mà cũng đáng kiểm tra: