我在我的一个项目中使用PayPal的MECL库,并且已经在六个设备上进行了测试和工作。但是当我在Nexus 7上测试它时,在调用PayPal.fetchDeviceReferenceTokenWithAppID()
方法时总是抛出NullPointerException:
07-24 23:26:11.466:W / System.err(28266): java.lang.NullPointerException 07-24 23:26:11.466: W / System.err(28266):at libcore.net.UriCodec.encode(UriCodec.java:132)07-24 23:26:11.466: W / System.err(28266):at java.net.URLEncoder.encode(URLEncoder.java:57)07-24 23:26:11.466: W / System.err(28266):at com.paypal.android.a.c.g(Unknown Source) 07-24 23:26:11.466:W / System.err(28266):at com.paypal.android.a.c.e(未知来源)07-24 23:26:11.466: W / System.err(28266):at com.paypal.android.a.c.b(Unknown Source) 07-24 23:26:11.466:W / System.err(28266):at com.paypal.android.a.d.run(未知来源)07-24 23:26:11.496: D / TilesManager(28266):开始TG#0,0x672a6428 07-24 23:26:11.496: D / TilesManager(28266):来自框架的新EGLContext:693dbd88 07-24 23:26:11.496:D / GLWebViewState(28266):重新启动着色器07-24 23:26:11.506:D / GLWebViewState(28266):重新启动transferQueue 07-24 23:26:12.566:D / dalvikvm(28266):GC_CONCURRENT释放1207K,10%免费 13335K / 14688K,暂停3ms + 6ms,总计55ms 07-24 23:26:13.136: E /错误(28266):身份验证失败,未启用按钮。 07-24 23:26:13.136:W / System.err(28266):java.lang.NullPointerException 07-24 23:26:13.136:W / System.err(28266):at com.paypal.android.a.c.a(未知来源)07-24 23:26:13.136: W / System.err(28266):at com.paypal.android.a.c.e(Unknown Source) 07-24 23:26:13.136:W / System.err(28266):at com.paypal.android.a.c.b(未知来源)07-24 23:26:13.136: W / System.err(28266):at com.paypal.android.a.d.run(Unknown Source)
请注意,完全相同的APK可以在Galaxy Nexus,S3甚至是Nexus 7模拟器上运行而没有问题,它只停止在Nexus 7上工作。我在这个阶段完全失败,所以欢迎任何帮助。< / p>
答案 0 :(得分:1)
我没有使用过Paypal的MECL库,但我想提出一些可能有助于您自己解决的一般性评论。
在这种情况下,NPE可能归因于以下之一:
1)NPE的发生是因为您没有将所有必需的库链接到您的APK,而Nexus 7正试图调用其他设备没有的东西。这是相对不太可能的,但成功设备的logcat跟踪应该证明或反驳这一点。即如果您的其他设备的logcat跟踪显示PayPal.fetchDeviceReferenceTokenWithAppID正常工作 - 那么这不是问题。
2)NPE的发生是因为Nexus 7缺少某些东西(或需要更新)。这就是我所说的环境问题。仔细检查Paypal文档以获取必要的软件级别。如果示例应用程序在其他设备上运行但在Nexus 7上运行,那么这可能是问题的原因。是不是Paypal不再支持MECL? - 这是否意味着撤销了必要的更新?PayPal.fetchDeviceReferenceTokenWithAppID看起来就像你在交易开始时会做的事情,所以我(仍然)猜测这是一个环境问题。
我不能告诉你具体问题是什么,但希望这会帮助你取得一些进展。
答案 1 :(得分:0)
我们最终更新了应用&amp;服务器使用新的PayPal Android API(https://github.com/paypal/PayPal-Android-SDK),现在似乎正在所有设备上运行。