2013-07-25 26 views
6

Tiểu sử bị hạn chế hiện khả dụng trong Android từ 4.3, tôi đã biết rằng một số ứng dụng như máy ảnh, gmail, v.v. không có sẵn trong các loại hồ sơ này. Làm cách nào tôi có thể quản lý các loại điều kiện này trong ứng dụng của mình? Ngoài ra, cách quản lý trong các sản phẩm ứng dụng và cài đặt hồ sơ bị hạn chế tương ứng với ứng dụng của tôi?Làm cách nào để quản lý hồ sơ bị hạn chế trong ứng dụng android?

Trả lời

1

Giao diện người dùng cho người dùng kiểm soát các hạn chế bạn đã xây dựng được ứng dụng Cài đặt của hệ thống quản lý. Để làm cho cài đặt giới hạn của ứng dụng xuất hiện cho người dùng, bạn phải khai báo các hạn chế mà ứng dụng của bạn cung cấp bằng cách tạo một BroadcastReceiver nhận ý định ACTION_GET_RESTRICTION_ENTRIES. Hệ thống gọi ra ý định này để truy vấn tất cả các ứng dụng cho các hạn chế có sẵn, sau đó xây dựng giao diện người dùng để cho phép người dùng chính quản lý các hạn chế đối với từng cấu hình bị hạn chế.

Để biết thêm thông nhìn vào http://developer.android.com/about/versions/android-4.3.html#RestrictedProfiles

5

Cảm ơn user370305 ngay cả khi tôi đã đến thăm

http://developer.android.com/about/versions/android-4.3.html#RestrictedProfiles

Tôi muốn cải thiện nó từ tài liệu tham khảo với

https://www.youtube.com/watch?v=pdUcANNm72o

Profiles Restricted là một tính năng mới được giới thiệu trong Android Jell y Bean 4.3 cho phép bạn cung cấp cho người dùng ứng dụng của bạn cải thiện khả năng kiểm soát khi chia sẻ máy tính bảng của họ.

Hồ sơ bị hạn chế này chia sẻ ứng dụng, tài khoản google của tài khoản người dùng chính nhưng bị hạn chế. Họ không truy cập được vào gmail, cửa hàng chơi, lịch vv Người dùng chính có thể chọn giới hạn cho từng ứng dụng.

UserManager lớp được mở rộng để quản lý những hạn chế này

UserManager.getUserRestrictions trả về hạn chế sử dụng rộng đối với người sử dụng quy định

UserManager.getApplicationRestrictions trả về một bó chứa bất kỳ lưu hạn chế ứng dụng cho người dùng này, đối với tên gói cho . Chỉ một ứng dụng có tên gói này mới có thể gọi phương thức này.

Nếu bạn cần cài đặt cụ thể sử dụng bộ lọc này ý định

<receiver android:name="GetRestrictionsReceiver"> 
<intent-filter> 
<action android:name="android.intent.action.GET_RESTRICTION_ENTRIES "/> 
</intent-filter> 
</receiver> 

hiện triển khai thu phát sóng với danh sách hạn chế nhập cảnh trở lại như thế này

public class GetRestrictionsReceiver extends BroadcastReceiver 
    { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      // TODO Auto-generated method stub 
      final PendingResult result=goAsync(); 
      new Thread(){ 
       public void run(){ 
        final Bundle extras=new Bundle(); 
        ArrayList<RestrictionEntry> newEntries = initRestricions(context); 
        extras.putParcelableArrayList(Intent.EXTRA_RESTRICTIONS_LIST, newEntries); 

        result.setResult(Activity.RESULT_OK, null, extras); 
        result.finish(); 
       } 

      }.start(); 

     } 


    } 

RestrictionEntry

Bất kỳ ứng dụng mà chọn để lộ như vậy các hạn chế làm như vậy bằng cách triển khai trình thu nhận xử lý hành độngACTION_GET_RESTRICTION_ENTRIES. Người nhận sau đó trả về một gói kết quả có chứa một mục được gọi là "các hạn chế", có giá trị là một ArrayList.

Có 3 loại Hạn chế nhập

  1. Boolean
  2. Độc Choice
  3. Nhiều Choice

Bạn có thể sử dụng phương pháp khác nhau của RestrictionEntry để thiết lập và nhận dạng khác nhau của những hạn chế.

Để có được quyền truy cập vào một tài khoản từ một hồ sơ cá nhân hạn chế, bạn phải thêm android: attribute restrictedAccountType cho tag:

<application ... 
    android:restrictedAccountType="com.example.account.type" > 
+0

+1 tổng quan hữu ích! – rekire

+1

Đảm bảo bạn sử dụng GET_RESTRICTION_ENTRIES thay vì GET_RESTRICTIONS_ENTRIES vì tôi vừa lãng phí thời gian cho việc này. – RuAware

+0

@RuAware Cảm ơn bạn đã chỉnh sửa –

1

bạn có thể sử dụng sau phần mã để phát hiện nếu ứng dụng của bạn đang chạy trong hồ sơ cá nhân bị hạn chế chế độ !!

import android.content.pm.UserInfo; 
import android.os.UserHandle; 
import android.os.UserManager; 

public static boolean isRestrictedProfileInEffect(Context context) { 
    UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE); 
    UserInfo restrictedUserInfo = null; 
    for (UserInfo userInfo : userManager.getUsers()) { 
     if (userInfo.isRestricted()) { 
      restrictedUserInfo = userInfo; 
     } 
    } 
    boolean isOwner = UserHandle.myUserId() == UserHandle.USER_OWNER; 
    boolean isRestrictedProfileOn = restrictedUserInfo != null && !isOwner; 
    return isRestrictedProfileOn; 
}