获取任何用户的用户名

时间:2015-04-30 04:33:57

标签: android multi-user limited-user

我目前正在使用以下代码获取当前用户名:

        String username;
        {
            Cursor c = ctx.getContentResolver().query(Profile.CONTENT_URI,
                new String[]{Profile.DISPLAY_NAME}, null, null, null);
            if (c.getCount() > 0)
            {
                c.moveToFirst();
                username = c.getString(0);
            }

在我的测试设备(Samsung Galaxy Tab Pro)上,使用正确的权限,这对于"所有者"用户,以及其他非限制用户。但是,对于有限的用户配置文件,情况似乎有所不同:

  • 代码始终返回零游标行。我曾希望启用对“联系人”应用程序的访问可以使其正常工作,但这没有任何效果。
  • 无论如何,与非限制性配置文件不同,受限用户帐户的配置文件似乎与锁定屏幕上显示的名称无关,因此即使我可以使此代码工作,我也可以使用不确定它会有多大用处。

请原谅多部分问题,但是:

  • 这是三星平板电脑的特点,还是这种行为在各种设备上都是一致的?
  • 有没有办法阅读受限用户的个人资料?
  • 有更好的方法来获取当前用户名吗?

有任何见解。

1 个答案:

答案 0 :(得分:1)

我试图搜索它&可以说不可能获得“受限制的个人资料(用户)”的详细信息。

在您尝试阅读“Restricted Profile user”的详细信息时,他们会尝试更改数据库并抛出SQLiteexception : delete then re-write existing database throws SQLiteReadOnlyDatabaseException on getWritableDatabase。由于这个例外,我认为没有机会读取用户名。

如果不使用上述代码,您可以直接致电UserManagergetUsername()。[API Level 17]