我的应用内结算代码工作正常,直到我升级到Android L Dev Preview.现在,当我的应用程序启动时出现此错误.有没有人知道L导致了什么变化或者我应该如何更改我的代码来解决这个问题?
android {
compileSdkVersion 'android-L'
buildToolsVersion '20'
defaultConfig {
minSdkVersion 13
targetSdkVersion 'L'
...
...
compile 'com.google.android.gms:play-services:5.+'
compile 'com.android.support:support-v13:21.+'
compile 'com.android.support:appcompat-v7:21.+'
...
...
Run Code Online (Sandbox Code Playgroud)
应用启动时的错误:
06-29 16:22:33.281 5719-5719/com.tbse.wnswfree D/AndroidRuntime? Shutting down VM
06-29 16:22:33.284 5719-5719/com.tbse.wnswfree E/AndroidRuntime? FATAL EXCEPTION: main
Process: com.tbse.wnswfree, PID: 5719
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tbse.wnswfree/com.tbse.wnswfree.InfoPanel}: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.android.vending.billing.InAppBillingService.BIND }
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2255)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2317)
at android.app.ActivityThread.access$800(ActivityThread.java:143)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1258)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5070)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372) …Run Code Online (Sandbox Code Playgroud) android illegalargumentexception android-intent in-app-billing android-5.0-lollipop
我正在尝试在我的应用程序中设置应用程序内结算.我没有走得太远,并且在尝试启动IabHelper时遇到了空指针异常.我正在关注这个谷歌教程.
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", …Run Code Online (Sandbox Code Playgroud) 关于github上的这个错误报告https://github.com/googlesamples/android-play-billing/issues/2#issuecomment-305380836我们被要求在这里提出这个问题.
问题很简单.用户手机上有2个或更多账号,比如xyz@gmail.com和abc@gmail.com.他们安装了一个帐户为xyz@gmail.com的应用程序.他们购买了一些IAP项目.该应用程序更新,现在该应用程序在abc@gmail.com下,用户已经失去了购买.使用分阶段发布时会发生很多这种情况.
主要问题是,作为开发人员,我们不允许用户选择要购买哪个帐户或使用哪个帐户来检查购买.
第二个问题,Android上的Play商店应用会忽略在汉堡菜单上选择的用户帐户.唯一的解决方法是使用此解决方法https://github.com/googlesamples/android-play-billing/issues/2#issuecomment-259108286上描述的Play商店网站上的相同错误报告.
我不知道理想的解决方案是什么,我所知道的是,对于每次更新后都会导致大量一星评价的开发人员来说,这是一个巨大的麻烦.
编辑:正如评论所指出的那样,当我提到多个帐户时,我说的是针对单个Android用户的多个Google帐户,我不是在谈论同一部手机中的多个Android用户.
in-app-purchase in-app-billing google-play google-play-services