मेरे पास निम्न विधियों में (जो ठीक पहली बार काम करता है):NullPointer, inappbilling वी 3
public void TipUs(){
String sku="tip_us";
try {
Bundle buyIntentBundle = mService.getBuyIntent(3, getPackageName(),
sku, "inapp", "TIP_US");
PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");
startIntentSenderForResult(pendingIntent.getIntentSender(),
1001, new Intent(),
Integer.valueOf(0), Integer.valueOf(0),
Integer.valueOf(0));
} catch (RemoteException e) {
e.printStackTrace();
} catch (SendIntentException e) {
e.printStackTrace();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1001)
{
int responseCode = data.getIntExtra("RESPONSE_CODE", 0);
String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");
String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");
if (resultCode == RESULT_OK) {
try {
JSONObject jo = new JSONObject(purchaseData);
String sku = jo.getString("productId");
}
catch (JSONException e) {
e.printStackTrace();
}
}
}
}
अगर मैं एक ही विधि का फिर से उपयोग करने का प्रयास (क्या गूगल में सेटिंग्स के अनुसार संभव हो जाना चाहिए प्ले) मुझे निम्न त्रुटि मिलती है:
java.lang.NullPointerException
at com.appiclife.tipcal.Tip_Calculator.TipUs(Tip_Calculator.java:521)
at com.appiclife.tipcal.Tip_Calculator.onClick(Tip_Calculator.java:350)
at android.view.View.performClick(View.java:2485)
at android.view.View$PerformClick.run(View.java:9080)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
at dalvik.system.NativeStart.main(Native Method)
क्या किसी को भी त्रुटि है, क्योंकि मैंने Google से बिल्कुल डेमो का उपयोग किया है, मुझे क्या बदलना चाहिए?
संपादित करें: ऐसा लगता है कि mService शून्य है (हालांकि अजीब बात यह है कि यह एक बार काम करता है, इसलिए यदि आप एक ही आइटम को एक से अधिक बार खरीद रहे हैं तो लगभग एक समस्या की तरह दिखता है)। मैं निम्नलिखित है:
यह मेरा कोड है:
OnCreate()
Intent("com.android.vending.billing.InAppBillingService.BIND"),
mServiceConn, Context.BIND_AUTO_CREATE);
और:
IInAppBillingService mService;
ServiceConnection mServiceConn = new ServiceConnection() {
public void onServiceConnected(ComponentName name,
IBinder service) {
System.out.println("Test!");
mService = IInAppBillingService.Stub.asInterface(service);
}
public void onServiceDisconnected(ComponentName name) {
mService = null;
}
};
onServiceConnected कभी नहीं कहा जाता है। मैं इस मैनुअल में नहीं देखा था: http://developer.android.com/google/play/billing/billing_integrate.html
लेकिन मैं प्रकट करने के लिए निम्न सेवा जोड़ने की कोशिश की, परिणाम के बिना (मैं इसे फिर से हटा दिया, मैं वहाँ सेवा घोषित करना चाहिए?):
<service android:name="com.android.vending.billing.IInAppBillingService" />
'com.appiclife.tipcal.Tip_Calculator.TipUs (Tip_Calculator.java:5221)' लाइन 521 क्या है? – Sam
हे सैम, \t startIntentSenderForResult (लंबित INTent.getIntentSender(), – Diego
मैंने ऐप बिलिंग में कभी भी उपयोग नहीं किया है, लेकिन मुझे लगता है कि लेनदेन विफल हुआ (आपको प्रतिक्रिया कोड देखना चाहिए)। – Sam