1

I am using PayPal's MECL library in one of my projects and it has been tested and worked as intended on half a dozen devices. However when I tested it on Nexus 7 an NullPointerException is always thrown when the PayPal.fetchDeviceReferenceTokenWithAppID() method is called:

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(Unknown Source) 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(Unknown Source) 07-24 23:26:11.496: D/TilesManager(28266): Starting TG #0, 0x672a6428 07-24 23:26:11.496: D/TilesManager(28266): new EGLContext from framework: 693dbd88 07-24 23:26:11.496: D/GLWebViewState(28266): Reinit shader 07-24 23:26:11.506: D/GLWebViewState(28266): Reinit transferQueue 07-24 23:26:12.566: D/dalvikvm(28266): GC_CONCURRENT freed 1207K, 10% free 13335K/14688K, paused 3ms+6ms, total 55ms 07-24 23:26:13.136: E/Error(28266): Authentication failed, button not enabled. 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(Unknown Source) 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(Unknown Source) 07-24 23:26:13.136: W/System.err(28266): at com.paypal.android.a.d.run(Unknown Source)

Note that the exact same APK can run without issues on Galaxy Nexus, S3, and even the Nexus 7 emulator, it only stopped working on Nexus 7. I am at a complete loss at this stage so any help is welcome.

4

2 回答 2

1

我没有使用过 Paypal 的 MECL 库,但我想发表一些一般性的评论,可能会帮助您自己解决这个问题。

在这种情况下,NPE 可能归因于以下情况之一:

1) NPE 发生是因为您没有将所有必需的库链接到您的 APK 并且 Nexus 7 正在尝试调用其他设备没有的东西。这相对不太可能,但是成功设备的 logcat 跟踪应该证明或反驳这一点。即,如果您的其他设备的 logcat 跟踪显示 PayPal.fetchDeviceReferenceTokenWithAppID 工作正常 - 那么这不是问题。

2) NPE 发生是因为您的 Nexus 7 缺少某些东西(或需要更新)。这就是我所说的环境问题。仔细检查 Paypal 文档以了解必要的软件级别。如果示例应用程序可以在其他设备上运行,但不能在 Nexus 7 上运行,那么这可能是问题的原因。是不是 Paypal 不再支持 MECL 了?- 这是否意味着必要的更新已被撤回?PayPal.fetchDeviceReferenceTokenWithAppID 看起来就像您在交易开始时会做的事情,所以我(仍然)猜测这是一个环境问题。

我不能告诉你你的具体问题是什么,但希望这会帮助你取得一些进展。

于 2013-07-24T17:16:30.537 回答
0

我们最终更新了应用程序和服务器以使用新的 PayPal Android API ( https://github.com/paypal/PayPal-Android-SDK ),现在似乎可以在所有设备上运行。

于 2013-10-20T12:51:58.633 回答