2013-07-15 17 views

Trả lời

15

Có, điều này có thể thực hiện được từ các tài khoản thử nghiệm. Đó là một chút khó khăn vì vậy ở đây một số mã ví dụ.

Thêm này trong biểu hiện của bạn:

<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.INTERNET" /> 

Và đây là mã thực tế được thực hiện trong ứng dụng. Đã thêm vào hoạt động dựa trên BaseGameActivity.

public void resetAchievements() 
{ 
    if(isSignedIn()) 
    { 
     String accountName = getGamesClient().getCurrentAccountName();  
     String scopes = getScopes(); 

     new ResetterTask(this, accountName, scopes).execute((Void) null); 
    } 
} 

private class ResetterTask extends AsyncTask<Void, Void, Void> 
{ 
    public String mAccountName; 
    public String mScope; 
    public Context mContext; 

    public ResetterTask(Context con, String name, String sc) 
    { 
     mContext = con; 
     mAccountName = name; 
     mScope = sc; 
    } 

    @Override 
    protected Void doInBackground(Void... params) 
    { 
     try 
     { 
      String accesstoken = GoogleAuthUtil.getToken(mContext, mAccountName, mScope); 

      HttpClient client = new DefaultHttpClient();     
      //Reset leader board: 
      /*String leaderboardid = "theleaderboardid"; 
      HttpPost post = new HttpPost 
        (
         "https://www.googleapis.com"+ 
         "/games/v1management"+ 
         "/leaderboards/"+ 
         leaderboardid+ 
         "/scores/reset?access_token="+accesstoken 
        );*/ 

      //Reset a single achievement like this: 
      /* 
      String acheivementid = "acheivementid"; 
      HttpPost post = new HttpPost 
        (
         "https://www.googleapis.com"+ 
         "/games/v1management"+ 
         "/achievements/"+ 
         acheivementid+ 
         "/reset?access_token="+accesstoken 
        );*/ 

      //This resets all achievements: 
      HttpPost post = new HttpPost 
        (
         "https://www.googleapis.com"+ 
         "/games/v1management"+ 
         "/achievements"+ 
         "/reset?access_token="+accesstoken 
        ); 


      client.execute(post); 
      Log.w(LogTag, "Reset achievements done."); 
     } 
     catch(Exception e) 
     { 
      Log.e(LogTag, "Failed to reset: " + e.getMessage(), e); 
     } 

     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) 
    { 
     //Launch activity to refresh data on client. 
     //NOTE: Incremental achievements will look like they are not reset. 
     //However, next time you and some steps it will start from 0 and 
     //gui will look ok. 
     startActivityForResult(getGamesClient().getAchievementsIntent(), 0); 
    } 
} 
+0

Tôi đang cố gắng làm việc này với API mới nhất nhưng tôi đang đấu tranh với "getScopes()". Bất cứ ai có thể cho tôi biết nơi tôi tìm thấy điều này? Hoặc những gì nó nên trở về? Cảm ơn. –

+2

@Will Calderwood Phương pháp này vẫn hoạt động, nhưng google đã thay đổi api GamesClient của họ. bạn có thể sử dụng "[email protected]" cho email và "oauth2: h ttps: //www.googleapis.com/auth/games" cho phạm vi (nospace) – Gak2

1

Có một cách khác để bạn có thể đạt được điều này. Chuyển đến (các) bảng dẫn đầu của bạn trong khu vực dịch vụ trò chơi của trang web dành cho nhà phát triển. Sau đó chọn một trong các bảng thành tích của bạn. Thay đổi tùy chọn Đặt hàng 'Lớn hơn là tốt hơn' thành 'Nhỏ hơn là tốt hơn' hoặc ngược lại. Lưu sau đó đi thay đổi nó trở lại.

Thao tác này sẽ xóa mọi giá trị bạn hiện có cho bảng thành tích đó và tất nhiên chỉ có thể thực hiện được trong khi thử nghiệm.

Các vấn đề liên quan