2013-05-31 40 views
1

我在我們的一些遊戲中的遊戲服務實施過程中被困住了。我無法檢索用戶圖像(使用Unity)。我可以得到圖像的Uri(來自內容提供者的Uri),但我無法使用ImageManager,因爲它將數據存儲在imageView中,我希望圖像的url /路徑使Unity處理所有數據。Android:解決內容提供商的uri,獲取玩家頭像(Android遊戲服務)

我最好的嘗試樹立了一個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; 
} 

任何幫助將apreciated。提前致謝!

回答

1

訪問圖像的唯一方法是通過ImageManager。你不能使用內容解析器。如果您只想要圖像並且不想處理ImageView,則可以使用ImageManager.loadImage(OnImageLoadedListener, Uri),該圖像會用帶Drawable的代表圖像的OnImageLoadedListener來調用。

然後,要從Drawable獲得Unity兼容的位圖,只需將其轉換爲位圖即可。有關如何執行此步驟的信息,請參見this answer,特別是André的答案(具有drawableToBitmap方法的答案)。

希望這會有所幫助!

+0

聽起來不錯(如果它是唯一的方法,則更多)。我會試一下! –

+0

終於我明白了。沒有視圖參數的加載圖像函數足以獲取圖像。對於存在相同問題的人來說,只需要一點提示:必須將位圖轉換爲byte []才能將其發送回Unity。 –