4

我正在使用以下代码:

public class MyBillingService extends Service implements ServiceConnection
{
    String TAG = "MyBillingService";

    @Override
    public void onCreate() 
    {
        super.onCreate();
        Log.i(TAG, "onCreate");

        try {
            boolean bindResult = getBaseContext().bindService(
                new Intent(IMarketBillingService.class.getName()), this, Context.BIND_AUTO_CREATE);
            if (bindResult) {
                Log.i(TAG, "Service bind successful.");
            } else {
                Log.e(TAG, "Could not bind to the MarketBillingService.");
            }
        } catch (SecurityException e) {
            Log.e(TAG, "Security exception: " + e);
        }
    }
}

我还添加了,IMarketBillingService.aidl但它仍然显示如下:

无法绑定到 MarketBillingService

你能指出我的错误吗?

4

2 回答 2

0

我在安装了干净系统的旧 Android 设备上进行测试。这上面没有 Google Market 应用程序的副本(帽子提示@sstn)。

所以我用谷歌账户登录,然后启动了市场。这促使我同意条款,Google Play 应用程序出现在应用程序列表中。

然后我删除并重新安装了我的应用程序并正确绑定到服务!

于 2012-04-19T11:25:12.533 回答
0

我不知道这是否是您的问题的原因,但您在 getBaseContext() 上使用了 bindService()。您是否有理由不在服务实例上调用 bindService() ?这就是示例服务的作用。

基本上下文似乎大部分是不需要的,一般建议似乎不使用它。请参阅另一个问题:获取 Context 的各种方法有什么区别?

除此之外,您需要在您的设备上安装最新(或至少是最新)版本的 Android 市场应用程序,尽管我认为它会自行更新。

有一种方法可以测试市场应用程序是否支持应用内计费,在应用内计费参考中有所描述。我认为值得进行检查。

于 2011-04-08T07:57:56.270 回答