Android:从内容提供者解析 uri,获取玩家头像(Android 游戏服务)

标签 android unity-game-engine android-contentprovider

我在某些游戏的游戏服务实现过程中遇到了困难。我无法检索用户图像(使用 Unity)。我可以获取图像的 Uri(来自内容提供商的 Uri),但我不能使用 ImageManager,因为它将数据存储在 imageView 中,我想要 url/让 Unity 处理所有数据的图像路径。

我最好的尝试是设置一个 ContentResolver 但我收到一个安全错误:

权限拒绝:打开提供商 com.google.android.gms.games.provider.GamesContentProvider

此时我找不到任何解决方案,事实上我根本找不到与 GamesContentProvider 相关的任何内容。所以我不知道在哪里可以找到正确的方法来检索数据或找到权限。

这里有部分代码:

public String getAvatarUrlGame(boolean highRes)
{
    String n = "";
    if (isSignedIn()) {
        Uri uri;
        if(highRes) uri = getGamesClient().getCurrentPlayer().getHiResImageUri();
        else        uri = getGamesClient().getCurrentPlayer().getIconImageUri();

        if (uri != null) 
        {
             Cursor cursor = this.getContentResolver().query(uri, new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, null, null, null);
             cursor.moveToFirst();   
             n = cursor.getString(0);
             cursor.close();
         }
    }
    return n;
}

我们将不胜感激任何帮助。提前致谢!

最佳答案

访问图像的唯一方法是通过 ImageManager .您不能使用内容解析器。如果你只想要图像而不想处理 ImageView,你可以使用 ImageManager.loadImage(OnImageLoadedListener, Uri) ,这将调用您的 OnImageLoadedListener带有表示图像的 Drawable。

然后,要从 Drawable 中获取与 Unity 兼容的位图,只需将其转换为位图即可。有关如何执行此步骤的信息,请参阅 this answer ,尤其是 André 的回答(具有 drawableToBitmap 方法的那个)。

希望这对您有所帮助!

关于Android:从内容提供者解析 uri,获取玩家头像(Android 游戏服务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16857873/

相关文章:

Android:无需重新定位屏幕即可将数据加载到 Webview

unity-game-engine - 等距 3D Unity 项目中的 2D Sprite

c# - 如何从 Unity 3d Shaderlab 中的像素着色器返回纹理?

android - 使用 ContentProviderClient 与 ContentResolver 访问内容提供者

android - 删除 Google 地点图标

Android 在哪里为不同的主题放置不同的图标?

java - 布局中的 Eclipse ADT Open 声明不再默认

c# - MonoDevelop 无法识别 MonoBehaviour

android - 如何从内容 uri 在 exoplayer 上播放视频?

android - 与 SMS 对话列表相关的 SGS-3 错误?