Android InApp计费错误:IAB活动结果中的数据为空
我一直在 IAB活动结果中的空数据 我正在尝试使用Android这个简单的例子在我的应用程序中实现应用内计费。我做错了什么Android InApp计费错误:IAB活动结果中的数据为空,android,Android,我一直在 IAB活动结果中的空数据 我正在尝试使用Android这个简单的例子在我的应用程序中实现应用内计费。我做错了什么 public class Donate extends AppCompatActivity { private static final String TAG = "TAG HERE"; IabHelper mHelper; static final String ITEM_SKU = "android.test.purchased"; private T
public class Donate extends AppCompatActivity {
private static final String TAG =
"TAG HERE";
IabHelper mHelper;
static final String ITEM_SKU = "android.test.purchased";
private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.setContentView(R.layout.activity);
toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setNavigationOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
finish();
}
});
//Google play purchase test
String base64EncodedPublicKey =
"<My base 64 key>";
mHelper = new IabHelper(this, base64EncodedPublicKey);
Button button = (Button) findViewById(R.id.donate_btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mHelper.launchPurchaseFlow(Donate.this, ITEM_SKU, 10001,
mPurchaseFinishedListener, "mypurchasetoken");
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data)
{
if (!mHelper.handleActivityResult(requestCode,
resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
}
}
公共类活动{
私有静态最终字符串标记=
“此处标记”;
艾伯曼帮助者;
静态最终字符串项\u SKU=“android.test.purchased”;
专用工具栏;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
此.supportRequestWindowFeature(Window.FEATURE\u无\u标题);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_全屏,WindowManager.LayoutParams.FLAG_全屏);
this.setContentView(R.layout.activity);
toolbar=(toolbar)findviewbyd(R.id.toolbar);
toolbar.setNavigationOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
完成();
}
});
//谷歌游戏购买测试
字符串base64EncodedPublicKey=
"";
mHelper=新的IABHeloper(此,base64EncodedPublicey);
Button Button=(按钮)findViewById(R.id.donate\u btn);
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
mHelper.launchPurchaseFlow(捐赠,此,项目库存单位,10001,
mppurchasefinishedlistener,“mypurchasetoken”);
}
});
}
@凌驾
ActivityResult上受保护的void(int请求代码、int结果代码、,
意图(数据)
{
如果(!mHelper.handleActivityResult)(请求代码,
结果代码,数据){
super.onActivityResult(请求代码、结果代码、数据);
}
}
<>代码> 既然你开始了,我也建议保持关注。它在DEV预览中,但是我会考虑它,只是为了更容易迁移。
正如Kavach所说,检查您是否添加了产品。
加上这个,告诉我们你得到了什么:
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
Log.d(TAG, "Problem setting up In-app Billing: " + result);
}
}
});
最后,请记住在onDestroy中处理帮助程序:
if (mHelper != null) mHelper.dispose();
您似乎尚未在Google Play开发者控制台上创建产品。请查看以下教程以帮助您完成此过程。这些是在Android Studio中实施应用内计费的分步指南:
您是否在google play store帐户上创建了该产品?您在做什么样的测试?closed alpha或其他?我正在使用静态最终字符串项\u SKU=“android.test.purchased”;
我仍在调试模式下测试我正在使用静态最终字符串项\u SKU=“android.test.purchased”我是否也需要为此创建产品?是的。您需要为后端的每个SKU_ID创建一个产品。请参阅教程。它们将对您大有帮助。请逐步遵循它们。既然您有测试产品,请让我们知道startSetup的结果,如果这解决了您的问题,请接受答案。