2

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

        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)上,具有正确的权限,这对“所有者”用户以及其他非受限用户都很有效。但是,对于有限的用户配置文件,事情似乎分崩离析:

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

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

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

任何见解表示赞赏。

4

1 回答 1

1

我试图搜索它并且可以说无法获得“受限个人资料(用户)”的详细信息。

在后台,当您尝试阅读“受限个人资料用户”的详细信息时,他们正试图更改数据库并抛出SQLiteexception : delete then re-write existing database throws SQLiteReadOnlyDatabaseException on getWritableDatabase. 由于这个例外,我认为没有机会阅读用户名。

getUsername()不使用上面的代码,您可以直接调用UserManager类。[API 级别 17]

于 2015-04-30T06:05:04.017 回答