2013-04-03 83 views
0

我使用android market API是什么AndroidId在Android的市场API

MarketSession session = new MarketSession(); 
     session.setAuthSubToken(token); 
     session.getContext().setAndroidId(Settings.Secure.getString(getContentResolver(), 
          "android_id")); 


     String query = "map"; 
     AppsRequest appsRequest = AppsRequest.newBuilder().setQuery(query) 
       .setStartIndex(0).setStartIndex(0).setEntriesCount(10) 
       .setWithExtendedInfo(true).build(); 

     session.append(appsRequest, new Callback<AppsResponse>() { 
      @Override 
      public void onResult(ResponseContext context, 
        AppsResponse response) { 

       Debug.e("", "Total App: " + response.getAppList().size()); 

       for (int i = 0; i < response.getAppCount(); i++) { 
        Debug.e("", "" + response.getApp(i).getTitle()); 
       } 

      } 
     }); 

     session.flush(); 

我logcat的

04-03 15:35:44.748: W/System.err(28330): Caused by: java.lang.RuntimeException: Response code = 400, msg = Bad Request 

它的setAndroidId问题,因为如果我使用dead000beef由于Android是那么它的工作原理及以上Android ID(我的Galaxy S3的Android ID)不起作用。

它实际上是Android ID吗?任何人都可以帮助我吗?

+0

这种方法是无效的。它不是官方API,开发人员可以多次更改或更新,因此您需要多次更改代码或方法。我用这个非官方的API创建了一个应用程序,第一次运行良好,然后在1个月后崩溃,并再次开始工作,然后再次崩溃。此API可以检索关于市场上所有应用程序的信息。我认为开发人员拥有自己的数据库,并在需要时进行更新。我决定不使用这个API。 – Daryn

回答

1

您使用的是错误的机器人ID,这样一来为我工作

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
    String udid = telephonyManager.getDeviceId(); 
    session = new MarketSession(); 
    session.getContext().setAndroidId(udid); 
    session.setAuthSubToken(token); 

不要忘记添加此权限

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