एंड्रॉइड के लिए ऐप बिलिंग v3 में परीक्षण करने के लिए मैंने एक संवाद लागू किया जो एक ही विकल्प आइटम एडाप्टर जोड़ता है। मैंने टेस्ट स्कस जोड़ा है, "android.test.purchased", "android.test.canceled", "android.test.refunded", "android.test.item_unavailable"।ऐप बिलिंग v3 में NullPointerException
जब मैं खरीद प्रवाह लॉन्च करने के लिए संवाद का उपयोग करता हूं तो सब ठीक है, मैं आइटम खरीदने में सक्षम हूं और आइटम सबसे निश्चित रूप से खरीदा जाता है। हालांकि, जब मेरा ऐप यूआई रीफ्रेश करने का प्रयास करता है तो मुझे एक nullpointerexception मिलता है। मुझे ताज़ा काम पता है।
12-16 01:06:06.706: I/Running inventory query with(20846): android.test.purchased
12-16 01:06:06.706: I/Running details query with(20846): SkuDetails:{"title":"Sample Title","price":"£0.61","type":"inapp","description":"Sample description for product: android.test.purchased.","productId":"android.test.purchased"}
12-16 01:06:06.706: I/Running details query with(20846): SkuDetails:{"title":"Sample Title","price":"£0.61","type":"inapp","description":"Sample description for product: android.test.purchased.","productId":"android.test.purchased"}
12-16 01:06:06.706: I/Running inventory query with(20846): android.test.canceled
12-16 01:06:06.706: I/Running details query with(20846): null
12-16 01:06:06.706: I/Running details query with(20846): null
12-16 01:06:06.706: D/AndroidRuntime(20846): Shutting down VM
12-16 01:06:06.706: W/dalvikvm(20846): threadid=1: thread exiting with uncaught exception (group=0x40d12930)
12-16 01:06:06.706: E/AndroidRuntime(20846): FATAL EXCEPTION: main
12-16 01:06:06.706: E/AndroidRuntime(20846): java.lang.NullPointerException
12-16 01:06:06.706: E/AndroidRuntime(20846): at com.example.test.MainActivity$1.onQueryInventoryFinished(MainActivity.java:201)
12-16 01:06:06.706: E/AndroidRuntime(20846): at com.example.test.util.IabHelper$2$1.run(IabHelper.java:536)
12-16 01:06:06.706: E/AndroidRuntime(20846): at android.os.Handler.handleCallback(Handler.java:725)
12-16 01:06:06.706: E/AndroidRuntime(20846): at android.os.Handler.dispatchMessage(Handler.java:92)
12-16 01:06:06.706: E/AndroidRuntime(20846): at android.os.Looper.loop(Looper.java:137)
12-16 01:06:06.706: E/AndroidRuntime(20846): at android.app.ActivityThread.main(ActivityThread.java:5039)
12-16 01:06:06.706: E/AndroidRuntime(20846): at java.lang.reflect.Method.invokeNative(Native Method)
12-16 01:06:06.706: E/AndroidRuntime(20846): at java.lang.reflect.Method.invoke(Method.java:511)
12-16 01:06:06.706: E/AndroidRuntime(20846): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-16 01:06:06.706: E/AndroidRuntime(20846): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-16 01:06:06.706: E/AndroidRuntime(20846): at dalvik.system.NativeStart.main(Native Method)
for (String s : allSkus) {
Log.i("Running inventory query with", "" + s);
SkuDetails c = inv.getSkuDetails(s);
Log.i("Running details query with", "" + c);
if (inv.hasPurchase(s)) {
purchaseArray.add(c.getTitle());
} else {
**LINE 201** objects.add(c.getPrice() + " T:" + c.getSku());
}
allSkus एक ArrayList जो ऊपर 4 SKUs रखती है:
यहाँ मेरी logcat है।
नलपॉइंटर स्कूडेट्स सी = inv.getSkuDetails (ओं) है;
जो यूआई रीफ्रेश पर शून्य देता है। लेकिन मुद्दा यह है कि यह पहली स्कू (android.test.purchased) के लिए काम करता प्रतीत होता है लेकिन दूसरी स्कू (android.test.canceled) के लिए शून्य है और यह भी एक और आइटम खरीदने के बाद चला जाता है जब यह केवल शून्य है (धनवापसी या खरीदा गया)। हालांकि अगर मैं इसे फिर से खोलता हूं, तो यह ठीक है और कोई nullpointerexception फेंक दिया जाता है।
मैं ArrayList वस्तुओं, तो कोई आइटम के बाद या खरीदा आइटम से पहले हर आइटम के रूप में जुड़ जाते हैं में जोड़ने से पहले एक अशक्त जांच जोड़ने inv.getSkuDetails (ओं) पर अशक्त लौट रहा है, तो
यह वास्तव में इतना आसान है जो मेरे जैसे नौसिखिया के लिए बहुत अच्छा है। सबसे पहले (मान लीजिए कि आप ग्रहण का उपयोग करते हैं) बस जहां आप एसडीके डाउनलोड करते हैं, ऐप बिलिंग में अतिरिक्त के भीतर देखें। एक बार ऐसा करने के बाद, यदि आप अपने एंड्रॉइड-एसडीके फ़ोल्डर में नेविगेट करते हैं तो यह ऐप बिलिंग v3 -> नमूने में अतिरिक्त> google> के अंतर्गत है। आपको बस इतना करना है कि इसे आयात करें और उपयोग की गई फाइलों की प्रतिलिपि बनाएँ और यहां वर्णित कुछ प्रश्न और श्रोताओं को जोड़ें http://developer.android.com/training/in-app-billing/preparing-iab-app.html#GetSample – AndroidPenguin
हे एंड्रॉइड पेंगुइन, सहायता के लिए धन्यवाद। लगभग कार्यान्वित किया गया है, बस एक भ्रम है या कह सकता है कि Google के लिंक से यह नहीं समझा कि लेनदेन को कैसे पुनर्स्थापित करना है। यदि प्रत्येक उत्पाद को फिर से खरीदा नहीं जा सकता है तो जानकारी प्राप्त करने के लिए कि मैंने पहले से ही उत्पाद खरीदा है। धन्यवाद .. :) – LuminiousAndroid
मेरी खुशी! ऊपर उठाने के लिए मत भूलना। सेट अप के ठीक बाद होने वाली क्वेरी खरीद यह करता है। जब तक आप निश्चित रूप से अपनी खरीद का उपभोग नहीं करते हैं। – AndroidPenguin