2013-07-15 18 views

Odpowiedz

15

Tak, jest to możliwe z kont testowych. To trochę trudne, więc tutaj przykład kodu.

Dodaj ten w swoim manifeście:

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

I tu jest rzeczywisty kod wykonywany w aplikacji. Dodano w działaniu opartym na 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

Próbuję uzyskać to działa z najnowszym API, ale mam problem z "getScopes()". Czy ktoś może mi powiedzieć, gdzie to znajdę? A może powróci? Dzięki. –

+2

@Will Calderwood Ta metoda nadal działa, ale Google zmieniło api aplikacji GamesClient. możesz użyć "[email protected]" dla e-maila i "oauth2: h ttps: //www.googleapis.com/auth/games" dla zakresu (nospace) – Gak2

1

Jest inny sposób na osiągnięcie tego. Przejdź do swojej tablicy wyników w obszarze usług gier na stronie dla programistów. Następnie wybierz jedną z tablic wyników. Zmień opcję Zamawiania "Większy jest lepszy" na "Mniejszy jest lepszy" lub na odwrót. Zapisz, a następnie zmień to z powrotem.

Spowoduje to usunięcie wszystkich wartości, które obecnie masz w tabeli wyników, i oczywiście jest to możliwe do wykonania tylko podczas testowania.

Powiązane problemy