首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IAB startSetup NullPointerException

IAB startSetup NullPointerException
EN

Stack Overflow用户
提问于 2013-12-17 05:48:36
回答 4查看 4.8K关注 0票数 21

我正在尝试在我的应用程序中设置应用程序计费。我没有走多远,在尝试启动我的IabHelper时遇到了一个空指针异常。我在跟踪本google教程

代码语言:javascript
复制
import com.iabtest.util.IabHelper;
import com.iabtest.util.IabResult;

public class MainActivity extends Activity
{
    IabHelper mHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String base64EncodedPublicKey = "My_secret_key";

        mHelper = new IabHelper(this, base64EncodedPublicKey);
        mHelper.enableDebugLogging(true); //Turned on to try to help solve the issue
        Log.d("TEST", "Starting setup.");
        mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener()
        {
            public void onIabSetupFinished(IabResult result)
            {
                Log.d("TEST", "Setup finished.");

                if(!result.isSuccess())
                {
                    // Oh noes, there was a problem.
                    Log.d("TEST", "Problem setting up in-app billing: " + result);
                    return;
                }

                //IAB SET UP!
                Log.d("TEST", "IAB ready");
            }
        });
    }
}

在下面的logcat中,空指针异常似乎是在第267行的IabHelper.java中触发的。因为这是谷歌代码,我不知道如何解决这个问题。这是267线。

代码语言:javascript
复制
if (!mContext.getPackageManager().queryIntentServices(serviceIntent, 0).isEmpty()) {

下面是带有错误的LogCat:

代码语言:javascript
复制
12-17 05:28:29.908: E/Trace(1478): error opening trace file: No such file or directory (2)

12-17 05:28:30.898: W/GooglePlayServicesUtil(1478): Google Play Store is missing.

12-17 05:28:31.838: D/TEST(1478): Starting setup.

12-17 05:28:31.838: D/IabHelper(1478): Starting in-app billing setup.

12-17 05:28:31.848: D/AndroidRuntime(1478): Shutting down VM

12-17 05:28:31.848: W/dalvikvm(1478): threadid=1: thread exiting with uncaught exception (group=0x40a71930)

12-17 05:28:31.878: E/AndroidRuntime(1478): FATAL EXCEPTION: main

12-17 05:28:31.878: E/AndroidRuntime(1478): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.iabtest/com.iabtest.MainActivity}: java.lang.NullPointerException

12-17 05:28:31.878: E/AndroidRuntime(1478):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)

12-17 05:28:31.878: E/AndroidRuntime(1478):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)

12-17 05:28:31.878: E/AndroidRuntime(1478):     at android.app.ActivityThread.access$600(ActivityThread.java:141)

12-17 05:28:31.878: E/AndroidRuntime(1478):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)

12-17 05:28:31.878: E/AndroidRuntime(1478):     at android.os.Handler.dispatchMessage(Handler.java:99)

12-17 05:28:31.878: E/AndroidRuntime(1478):     at android.os.Looper.loop(Looper.java:137)

12-17 05:28:31.878: E/AndroidRuntime(1478):     at android.app.ActivityThread.main(ActivityThread.java:5041)

12-17 05:28:31.878: E/AndroidRuntime(1478):     at java.lang.reflect.Method.invokeNative(Native Method)

12-17 05:28:31.878: E/AndroidRuntime(1478):     at java.lang.reflect.Method.invoke(Method.java:511)

12-17 05:28:31.878: E/AndroidRuntime(1478):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)

12-17 05:28:31.878: E/AndroidRuntime(1478):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)

12-17 05:28:31.878: E/AndroidRuntime(1478):     at dalvik.system.NativeStart.main(Native Method)

12-17 05:28:31.878: E/AndroidRuntime(1478): Caused by: java.lang.NullPointerException

12-17 05:28:31.878: E/AndroidRuntime(1478):     at com.iabtest.util.IabHelper.startSetup(IabHelper.java:267)

12-17 05:28:31.878: E/AndroidRuntime(1478):     at com.iabtest.MainActivity.onCreate(MainActivity.java:112)

12-17 05:28:31.878: E/AndroidRuntime(1478):     at android.app.Activity.performCreate(Activity.java:5104)

12-17 05:28:31.878: E/AndroidRuntime(1478):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)

12-17 05:28:31.878: E/AndroidRuntime(1478):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)

12-17 05:28:31.878: E/AndroidRuntime(1478):     ... 11 more

编辑:我仍然不确定错误的原因。然而,我发现了一个比google文档更有用的教程。教程

EN

回答 4

Stack Overflow用户

发布于 2014-06-13 09:33:27

另一个谷歌“写一次,让别人来解决我们的问题”的好例子。即使在这个时候(2014年6月),“补丁”仍然不在发布的sdk中。为了解决这个问题

代码语言:javascript
复制
 if (!mContext.getPackageManager().queryIntentServices(serviceIntent, 0).isEmpty()) {

使用

代码语言:javascript
复制
  PackageManager pm=mContext.getPackageManager();
  List<ResolveInfo> intentServices = pm.queryIntentServices(serviceIntent, 0);
  if (intentServices != null && !intentServices.isEmpty())

然后在dispose代码中

替换

代码语言:javascript
复制
  if (mContext != null) mContext.unbindService(mServiceConn);

使用

代码语言:javascript
复制
  if (mContext != null && mService!=null) mContext.unbindService(mServiceConn);

我希望这能帮到你。

票数 67
EN

Stack Overflow用户

发布于 2013-12-17 05:55:13

请添加google play的jar文件,services.this是错误的,重新抓取缺失的google play服务

票数 0
EN

Stack Overflow用户

发布于 2013-12-17 06:23:36

这个问题可能与这里提出的问题有关。

更新的代码尚未提交到SDK管理器,但您可以在这里查看与此问题相关的所有更改:

https://code.google.com/p/marketbilling/source/detail?r=7ec85a9b619fc5f85023bc8125e7e6b1ab4dd69f

有4个文件受此问题影响。做他们建议的改变,看看你是否还会遇到同样的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20626870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档