Open GoogleCodeExporter opened 8 years ago
We too are getting this error reported by users. We're unsure how to reproduce
it. Any hints greatly appreciated.
Original comment by mike.jim...@gmail.com
on 2 Jun 2011 at 2:29
[deleted comment]
I noticed that this stack trace is produced when you clear all data from the
Market app and try to use in-app purchases without first initializing the
Market app (there's some kind of opt-in step the first time you start the
Market app).
Original comment by mike.jim...@gmail.com
on 14 Jun 2011 at 8:15
I can't really prove it, but there must be other cases too. It's unlikely that
people will clear the Market app data after downloading the app. In any case if
the Market or in-app billing is not available, it should return
BILLING_NOT_AVAILABLE or some other relevant error code, not crash with a NPE.
Original comment by nikolay....@gmail.com
on 15 Jun 2011 at 1:19
I am facing the same NPE but only client side when I sending build for testing
it is not produced on my side so its bizarre to know what is happening, For
testing purpose on client side I sending this
mBillingService.requestPurchase("android.test.purchased", null);
and below is my stacktrace from ACRA might someone find useful
"java.lang.NullPointerException
at android.os.Parcel.readException(Parcel.java:1266)
at android.os.Parcel.readException(Parcel.java:1248)
at com.android.vending.billing.IMarketBillingService$Stub$Proxy.sendBillingRequest(IMarketBillingService.java:100)
at com.market.BillingService$RequestPurchase.run(BillingService.java:230)
at com.market.BillingService$BillingRequest.runIfConnected(BillingService.java:119)
at com.market.BillingService.runPendingRequests(BillingService.java:542)
at com.market.BillingService.onServiceConnected(BillingService.java:579)
at android.app.ActivityThread$PackageInfo$ServiceDispatcher.doConnected(ActivityThread.java:1247)
at android.app.ActivityThread$PackageInfo$ServiceDispatcher$RunConnection.run(ActivityThread.java:1264)
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:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)
"
Original comment by ingsaur...@gmail.com
on 24 Jun 2011 at 4:58
This seems to happen when you pass null as second argument to requestPurchase.
Do not use something that might be null - unfortunately, the Secure.ANDROID_ID
can be null on some devices:
String android_id =
Secure.getString(PersonsListActivity.this.getContentResolver(),
Secure.ANDROID_ID); // could be null!
if (!mBillingService.requestPurchase("unlimitedpayments", android_id)) { //
crashs with NPE
showDialog(DIALOG_BILLING_NOT_SUPPORTED_ID);
}
My solution is to use the Wifi MACAdress if Secure.ANDROID_ID is null:
WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = manager.getConnectionInfo();
String MACAddress = wifiInfo.getMacAddress();
Original comment by francois...@gmail.com
on 5 Jul 2011 at 7:47
The second parameter is the developer payload, which is optional, and thus
allowed to be null. Unless you changed something in BillingService, ANDROID_ID
being null is unrelated to this issue.
Original comment by nikolay....@gmail.com
on 5 Jul 2011 at 8:02
[deleted comment]
You seem to be right - according to javadoc, developer payload is optional and
allowed to be null.
I referenced commment 5, which seems to be able to reproduce the error with
mBillingService.requestPurchase("android.test.purchased", null);
...I'm getting this exception too and would be happy to know the -correct-
solution.
Right now, I'm doing an ugly try / catch and falling back to the regular Market.
Original comment by francois...@gmail.com
on 5 Jul 2011 at 9:09
This happens when the device has not accepted the License Agreement and try to
call this line I encountered this problem when my client just bought a new
device and try run my app which make use of inApp so he didnt ever opened
market app in his device and so had never accepted the Agreement once you
accept the it this error will not be there
mBillingService.requestPurchase("android.test.purchased", null);
Now for real life scenario your app if installed from market there cant be any
scenario he hasnt accepted that agreement so in practice once your app is
published your app will never throw such exception. And if you want to
reproduce the problem follow comment 1
Original comment by ingsaur...@gmail.com
on 5 Jul 2011 at 9:21
Just a thanks, was pulling my hair out, coulnt work out why my app broke after
I did a factory reset and went straight to a debugger without market first!
Google Fodder
"sendBillingRequest null exception"
How to fix "sendBillingRequest null exception"
As above, check the device has accessed the market at least once.
Original comment by bher...@gmail.com
on 4 Aug 2011 at 5:02
Yeah, I was a bit concerned as well, although this isn't exactly ideal. Some
users won't necessarily go to the market first, and will blame this on the app,
when it's clearly not at fault.
Is there a reason why it can't prompt the terms of service when it opens up
after the user clicks to purchase something?
Original comment by andr...@jogonaut.com
on 6 Sep 2011 at 2:20
Really similar, but happening even earlier - on checkBillingSupported call at
the very start of my application.
Note: I have hidden with asterisk my app package.
java.lang.NullPointerException
at android.os.Parcel.readException(Parcel.java:1327)
at android.os.Parcel.readException(Parcel.java:1275)
at
com.android.vending.billing.IMarketBillingService$Stub$Proxy.sendBillingRequest(
IMarketBillingService.java:100)
at *.BillingService$CheckBillingSupported.run(BillingService.java:191)
at *.BillingService$BillingRequest.runIfConnected(BillingService.java:120)
at *.BillingService.runPendingRequests(BillingService.java:547)
at *.BillingService.onServiceConnected(BillingService.java:584)
at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1058)
at
android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1075)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4123)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
at dalvik.system.NativeStart.main(Native Method)
Any ideas on solving the issue?
Original comment by krzyszto...@blstream.com
on 16 Sep 2011 at 12:35
I see the same problem as #13.
It started occuring last week or so.
Original comment by kenneth@hexad.dk
on 4 Oct 2011 at 10:18
I have experienced the exactly same error as described here. Just put a very
ugly try catch, could I find another and more "lean" solution to it!?
My IAP manager is basically the same as the one used in the Dungeon example.
Thx!
Original comment by pekay...@gmail.com
on 10 Oct 2011 at 8:12
[deleted comment]
This error occurs if the user isn't logged on the phone in Google account
Original comment by sashscor...@gmail.com
on 12 Oct 2011 at 1:18
To repro this issue, you can delete user data from the market application,
effectively removing acceptance of the EULA. Settings->applications->manage
applications->market->clear data.
Original comment by moblyng...@gmail.com
on 26 Oct 2011 at 9:41
This for sure occurs when the Market EULA has not been accepted. This error can
occur after a Market upgrade has taken place as this also causes the EULA data
to be cleared. This means that if your app has been running perfectly and a
Market place upgrade occurs which the users may not have looked at and hence
accepted the EULA that you app will keep crashing until they get round to
accessing the Market place and accepting the EULA. By this time your app may
have been given a very poor rating (after all it crashes all the time), you may
have spent hours trying to reproduce the bug, your app may be deleted and it's
all because Google reset the EULA.
Come on Google, this is a bug, please fix it urgently as it affects revenue for
all of us!!!
Original comment by j.robin....@gmail.com
on 29 Oct 2011 at 8:05
I have implemented the following work around that I have placed around ALL
calls to the billing interfaces. This is not neat but it does seem to work. I
have used an alert as this makes sure that the user is aware that the problem
lies with the Android Market and not my application (for me this code is always
in an activity so that the context to the dialog is available):
try {
CALL BILLING CODE HERE .....
} catch (NullPointerException e) {
initialiseMarket();
}
private void initialiseMarket() {
new AlertDialog.Builder(this).
setTitle("Android Market").
setNeutralButton("CLOSE"), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search"));
startActivity(intent);
}
}).
setMessage("Android Market not initialised. Please accept EULA and restart.").
show();
}
Original comment by j.robin....@gmail.com
on 29 Oct 2011 at 9:49
The not-yet-accepted EULA is not the only cause of this NPE. I have an N1
(2.3.6) user in China who has definitely accepted the EULA (indeed, they get to
the main Market app screen) who is also getting this NPE.
Original comment by mjc1...@gmail.com
on 1 Nov 2011 at 3:14
Can anyone confirm that this is still the case with the latest version of
Market app 3.3.11? I currently cannot reproduce this EULA bug...
Original comment by mjc1...@gmail.com
on 4 Nov 2011 at 12:55
I've been running some tests and here is what I'm getting when the EULA has not
been accepted:
Market app 3.1.5 (N1 2.3.6): CheckBillingSupported returns
RESULT_BILLING_UNAVAILABLE and requestPurchase leads to the NPE described in
this thread.
Market app 3.3.11 (HTC Hero 2.2): CheckBillingSupported returns RESULT_OK and
requestPurchase() can proceed as desired.
These tests aren't very scientific so would be interested to hear if others are
also experiencing this.
Original comment by mjc1...@gmail.com
on 4 Nov 2011 at 1:29
I've found another cause of this exception besides not excepting the EULA. The
following scenario occurs on a Samsung Galaxy Tab 10.1.
The standard tablet market is version 1.X, whereas the latest phone markets are
v3.1.X. If you manually download and install the 3.1.X market apk onto the
Samsung Tab then you will see two markets. Both will appear to work and you can
download apps from both. However once the 3.1.X market is installed, any time
an app hits the line
com.android.vending.billing.IMarketBillingService$Stub$Proxy.sendBillingRequest
it throws the readException reported above. I found this consistenty across
several apps including Wind Up Knight and other games.
I found the issue by factory resetting my tab and then trying Wind Up Knight
before and after installing the 3.1.X market with the readException starting as
soon as it was installed. I used Apps Explorer to uninstall the 3.1.X market
and after this Wind Up Knight started to work again.
Hope this helps.
Original comment by samsungt...@gmail.com
on 20 Nov 2011 at 11:23
Market app 3.4.4
Os version 2.3.3
Galaxy S 2
EULA accepted, but
java.lang.NullPointerException
at android.os.Parcel.readException(Parcel.java:1328)
at android.os.Parcel.readException(Parcel.java:1276)
still exists
at .sendBillingRequest call
Original comment by istar...@gmail.com
on 25 Feb 2012 at 6:57
This just started happening 2 hours ago in my app, I've gotten 70 exception
reports within the last 2 hours. What on earth is happening!? The app's been
working great for months (since April) until just now..
java.lang.NullPointerException
at android.os.Parcel.readException(Parcel.java:1328)
at android.os.Parcel.readException(Parcel.java:1276)
at com.android.vending.billing.IMarketBillingService$Stub$Proxy.sendBillingRequest(IMarketBillingService.java:100)
at inapp.billing.BillingService$RequestPurchase.run(BillingService.java:231)
at inapp.billing.BillingService$BillingRequest.runIfConnected(BillingService.java:120)
at inapp.billing.BillingService$BillingRequest.runRequest(BillingService.java:97)
at inapp.billing.BillingService.requestPurchase(BillingService.java:444)
at inapp.billing.EmergencyButtonInAppBilling.openMarketPurchaseActivity(EmergencyButtonInAppBilling.java:96)
at inapp.billing.EmergencyButtonInAppBilling$1.onClick(EmergencyButtonInAppBilling.java:126)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:163)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3701)
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:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624)
at dalvik.system.NativeStart.main(Native Method)
Original comment by ubershmekel@gmail.com
on 12 Aug 2012 at 4:06
Quoting from above:
"This happens when the device has not accepted the License Agreement and try to
call this line I encountered this problem when my client just bought a new
device and try run my app which make use of inApp so he didnt ever opened
market app in his device and so had never accepted the Agreement once you
accept the it this error will not be there"
You need to modify your app to catch the exception (and ideally let them know
that the License Agreement needs to be signed, or if it's a Samsung tablet,
then let them know the other issue listed above). It's the only way unless they
fix the core bug in Android.
Original comment by tim.men...@gmail.com
on 12 Aug 2012 at 4:29
Please check the implement of sendBillingRequest in service side. The remote
service throw the Runtime Exception and re-write the Exception to Client. Your
app's data may have problem, the Service itself may also have bug.
Original comment by Suu...@gmail.com
on 1 Feb 2013 at 2:16
Really useless app.
Original comment by dimasma...@gmail.com
on 19 Feb 2014 at 10:52
Original issue reported on code.google.com by
nikolay....@gmail.com
on 23 May 2011 at 11:29