Ich verfolge den Androiden in app billing tutorial wo es heißt einen separaten Thread erstellen:Wie in App-Abrechnung
Warnung: die getSkuDetails Methode auf dem Haupt-Thread nicht nennen. Durch den Aufruf dieser Methode wird eine Netzwerkanforderung ausgelöst, die Ihren Haupt-Thread blockieren könnte. Erstellen Sie stattdessen einen separaten Thread und rufen Sie die getSkuDetails-Methode innerhalb dieses Threads auf.
für den folgenden Code:
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);
Intent serviceIntent =
new Intent("com.android.vending.billing.InAppBillingService.BIND");
serviceIntent.setPackage("com.android.vending");
getActivity().bindService(serviceIntent, mServiceConn, Context.BIND_AUTO_CREATE);
ArrayList<String> skuList = new ArrayList<String>();
skuList.add("iap_one");
Bundle querySkus = new Bundle();
querySkus.putStringArrayList("ITEM_ID_LIST", skuList);
try {
Bundle skuDetails = mService.getSkuDetails(3,
getActivity().getPackageName(), "inapp", querySkus);
int response = skuDetails.getInt("RESPONSE_CODE");
if (response == 0) {
ArrayList<String> responseList
= skuDetails.getStringArrayList("DETAILS_LIST");
for (String thisResponse : responseList) {
try {
JSONObject object = new JSONObject(thisResponse);
String sku = object.getString("productId");
String price = object.getString("price");
Log.d("Test Price", price);
} catch (JSONException e){
Log.e("MYAPP", "unexpected JSON exception", e);
}
}
}
} catch (RemoteException e) {
Log.e("MYAPP", "unexpected Remote exception", e);
}
}
};
' AsyncTask' ist die Standardmethode, um Dinge auf einem Hintergrundthread in Android zu tun. Viele Informationen darüber, wie man das im Internet macht. – nasch