2

私は現在、ユーザーに小さな寄付をすることができるように、アプリにアプリ内課金を追加しようとしています。私は開発のためにAndroidスタジオの最新バージョンを使用しています(ステップバイステップで、私はまったく同じようにやっています...):https://developer.android.com/google/play/billing/billing_integrate.htmlAndroidのアプリ内課金:onServiceConnectedは呼び出されず、bindServiceから「false」が返されます

AIDLファイルが置かれています(com.android.vending.billingパッケージ内のsrc/mainの下に)上記の場所にあり、genフォルダの下に生成されています。私はこの方法onServiceConnectedが呼び出されないことに気づいた製品の検索をテストした

、それは次のように活動して実装されています。サービスへの結合

IInAppBillingService mService; 

ServiceConnection mServiceConn = new ServiceConnection() { 
    @Override 
    public void onServiceDisconnected(ComponentName name) { 
     mService = null; 
    } 

    @Override 
    public void onServiceConnected(ComponentName name, 
     IBinder service) { 
     mService = IInAppBillingService.Stub.asInterface(service); 
    } 
}; 

が同じで(このように作られていますアクティビティ):

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_donation); 
    Intent serviceIntent = 
     new Intent("com.android.vending.billing.InAppBillingService.BIND"); 
    serviceIntent.setPackage("com.android.vending"); 
    bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE); 
} 

私は二つのことに気づい:私が去るとき

  • を寄付活動私はコンソールで例外が表示されます:... has leaked ServiceConnection ... that was originally bound here - 私はいくつかの人々は、活動ではなく、実際にはアプリケーションのコンテキスト上で使用bindServiceを置き換えることを提案し、私がこれを行う場合は、問題はなくなっています。しかし、私はそれがonServiceConnectedと呼ばれていない私の主な問題とは無関係であると思うし、なぜ公式ガイドの活動に呼び出されているのでしょうか?
  • bindServiceブール値を返し、戻り値を確認しました。falseでした。だから私はこれが問題の原因だと思う。

私は何人かの人々は、サービスのエントリがのAndroidManifest.xmlに追加されなければならないことを言っているのを見ました - このように:

はこれを試してみましたが、それは何の違いを行っていないし、また、このエントリは言及されていません公式ガイドでは、私はそれが必要ではないと信じています。

私が間違っていることは何ですか?

答えて

9

実は私はその間に「間違った」何であったかが分かりました。公式テストアプリ内課金ガイド(https://developer.android.com/google/play/billing/billing_testing.html)によると

は、Android搭載デバイス上でアプリケーションをインストールします。

エミュレータを使用してアプリ内課金をテストすることはできません;アプリ内課金をテストするデバイスにアプリケーションを インストールする必要があります。

残念ながら、この情報は他のガイドにはありませんでした。通常、私はまずエミュレータのすべてをテストします。実際のデバイスにアプリをデプロイしてそこでテストしたところ、問題はなかったことは明らかでした。

私は今、そこに接続の問題が実際にあるか、私は上の機能をテストした場合より見やすくするために、サービスへの接続が場合に確立できなかったことをユーザに通知する際bindService戻っ表示されるメッセージが含まれてエミュレータ。

+2

これは私を1日困惑させました。 – nurettin

関連する問題