我正在使用Android market 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 :(得分:1)
您使用的是错误的Android 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"/>