gpt4 book ai didi

android - IAB startSetup NullPointerException

转载 作者:IT老高 更新时间:2023-10-28 23:02:17 24 4
gpt4 key购买 nike

我正在尝试在我的应用程序中设置应用内计费。我没有走多远,在尝试启动我的 IabHelper 时遇到了空指针异常。我关注 this google tutorial .

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 中触发了空指针异常。由于这是 google 代码,我不确定如何解决此问题。这是第 267 行。

if (!mContext.getPackageManager().queryIntentServices(serviceIntent, 0).isEmpty()) {

这是我的 LogCat 错误:

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

编辑:我仍然不确定错误的原因。但是,我发现了一个比谷歌文档更好的有用教程。 http://www.techotopia.com/index.php/Integrating_Google_Play_In-app_Billing_into_an_Android_Application_%E2%80%93_A_Tutorial

最佳答案

Google 的另一个很好的例子是“编写一次,让其他人解决我们的问题”。即使在这一刻(2014 年 6 月),“补丁”仍然不在已发布的 sdk 中。解决问题替换

 if (!mContext.getPackageManager().queryIntentServices(serviceIntent, 0).isEmpty()) {

  PackageManager pm=mContext.getPackageManager();
List<ResolveInfo> intentServices = pm.queryIntentServices(serviceIntent, 0);
if (intentServices != null && !intentServices.isEmpty())

然后在dispose代码中

替换

  if (mContext != null) mContext.unbindService(mServiceConn);

  if (mContext != null && mService!=null) mContext.unbindService(mServiceConn);

我希望这会有所帮助。

关于android - IAB startSetup NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20626870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com