我正在尝试here
的示例代码。但我的应用程序崩溃了。
我添加了日志记录,发现它在session.flush();
崩溃,所以我删除了该行,它不再崩溃。
但它没有达到onResult
回调。
package com.mytest.app;
import com.gc.android.market.api.MarketSession;
import com.gc.android.market.api.MarketSession.Callback;
import com.gc.android.market.api.model.Market.AppsRequest;
import com.gc.android.market.api.model.Market.AppsResponse;
import com.gc.android.market.api.model.Market.ResponseContext;
import android.app.Activity;
import android.os.Bundle;
import android.provider.Settings.Secure;
import android.util.Log;
public class MarketAPITestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.d("Market API", "Started");
String email = "somebody@gmail.com";
String pass = "mypass";
String AndroidId = Secure.getString(this.getContentResolver(), Secure.ANDROID_ID);
MarketSession session = new MarketSession();
session.login(email,pass);
session.getContext().setAndroidId(AndroidId);
String query = "maps";
AppsRequest appsRequest = AppsRequest.newBuilder()
.setQuery(query)
.setStartIndex(0).setEntriesCount(10)
.setWithExtendedInfo(true)
.build();
session.append(appsRequest, new Callback<AppsResponse>() {
@Override
public void onResult(ResponseContext context, AppsResponse response) {
Log.d("Market API", "Got response");
}
});
session.flush();
}
}
答案 0 :(得分:4)
androidId
存在问题。而不是:
String AndroidId = Secure.getString(this.getContentResolver(), Secure.ANDROID_ID);
使用此:
String AndroidId = "dead000beef";
有效。
答案 1 :(得分:1)
我强烈建议您查看https://groups.google.com/forum/#!forum/android-market-api(我知道唯一仍然对Android Market API有效的地方)。
请注意,身份验证方法(login / pwd)现在已被弃用(并且不安全),并且可能不再受当前市场协议的支持。
此外,有效的Android ID不再像以前那样简单,只需查看其中的组。
答案 2 :(得分:1)
这不是Secure.ANDROID_ID,它是Gtalk服务设备ID。
您可以使用以下代码:
public String getDeviceId(Context context) {
String[] params = { GSERVICES_ID_KEY };
Cursor c = context.getContentResolver()
.query(GSERVICES_URI, null, null, params, null);
if (!c.moveToFirst() || c.getColumnCount() < 2)
return null;
try {
return Long.toHexString(Long.parseLong(c.getString(1))).toUpperCase();
} catch (NumberFormatException e) {
return null;
}
}
并添加阅读Gservice
的权限<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>