2012-11-22 58 views
3

我對這個類的工作:的UserManager的UserManager getUserCount()(Jelly Bean)的

public int getUserCount() 

返回當前在設備上創建的用戶數。

我的代碼是:

UserManager um = (UserManager) getSystemService(USER_SERVICE); 
int count = um.getUserCount(); 
Log.i("count",""+count); 

它產生的錯誤是這樣的:

Caused by: java.lang.SecurityException: You need MANAGE_USERS permission to: query users 
    at android.os.Parcel.readException(Parcel.java:1425) 
    at android.os.Parcel.readException(Parcel.java:1379) 
    at android.os.IUserManager$Stub$Proxy.getUsers(IUserManager.java:321) 
    at android.os.UserManager.getUsers(UserManager.java:198) 
    at android.os.UserManager.getUserCount(UserManager.java:186) 
    at com.example.multiusertest.MainActivity.onCreate(MainActivity.java:52) 
    at android.app.Activity.performCreate(Activity.java:5104) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 

我已經在清單文件手動添加此權限。有誰知道它爲什麼是生產。

清單文件:

<uses-sdk 
    android:minSdkVersion="17" 
    android:targetSdkVersion="17" /> 
<uses-permission android:name="android.permission.MANAGE_USERS"/> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.multiusertest.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

+1

請顯示您的清單文件... –

+2

我在這裏沒有4.2源,但我首先檢查是否有機會android.permission.MANAGE_USERS不是系統|簽名只有 –

+1

你有沒有嘗試重建/清理你的項目? – K4emic

回答

3

MANAGE_USERSsignature|system一個的ProtectionLevel,這意味着應用程序必須與平臺密鑰簽名。見this thread在XDA

+0

如果我有root權限,該怎麼辦?是否有可能獲得用戶數量? –

1

你可以得到相同的結果,但是從查詢模式:

UserManager um = (UserManager) getSystemService(USER_SERVICE); 
int count = um.getUserProfiles().size(); 

這樣,你可以指望返回的用戶句柄數。

+0

這總是隻返回當前用戶。意思是它總是返回size = 1. –

+0

如果啓用了其他用戶(配置文件),它將返回一個不同的數字, –

相關問題