In App Purchase的什么也没有发生的Android [英] In App Purchase Nothing happens Android
问题描述
随着<一个href=\"http://www.techotopia.com/index.php/An_Android_Studio_Google_Play_In-app_Billing_Tutorial#Implementing_the_onActivityResult_Method\"相对=nofollow>这个在应用内购买指导。不知道我做错了,但任何帮助将是惊人的!相当棘手及其在片段不是一般的活动。在日志中唯一的事情是的ViewRoot的触摸事件:ACTION_UP然后ACTION_DOWN
公共类Fragment_1扩展片段{IabHelper mHelper;
私人按钮clickButton;
私人按钮buyButton;
私有静态最后的字符串标记=
com.appal.inappbilling;
静态最后弦乐ITEM_SKU =android.test.purchased;公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
捆绑savedInstanceState){
查看查看= inflater.inflate(R.layout.fragment_1,
集装箱,FALSE);
buyButton =(按钮)view.findViewById(R.id.buyButton);
buyButton.setOnClickListener(新View.OnClickListener(){
@覆盖
公共无效的onClick(视图v){
(五)buttonClicked;
}
}); clickButton =(按钮)view.findViewById(R.id.clickButton);
clickButton.setOnClickListener(新View.OnClickListener(){
@覆盖
公共无效的onClick(查看V2){
buyClick(V2);
}
});
clickButton.setEnabled(假); 字符串base64En codedPublicKey =
我的钥匙; mHelper =新IabHelper(getActivity(),base64En codedPublicKey); mHelper.startSetup(新
IabHelper.OnIabSetupFinishedListener(){
公共无效onIabSetupFinished(IabResult结果){
如果(!result.isSuccess()){
Log.d(TAG,应用内结算设置失败:+
结果);
}其他{
Log.d(TAG,应用内结算设置OK);
}
}
}); 返回视图。}
公共无效buttonClicked(视图V)
{
clickButton.setEnabled(假);
buyButton.setEnabled(真);
}
公共无效buyClick(查看V2){
mHelper.launchPurchaseFlow(getActivity(),ITEM_SKU,10001,
mPurchaseFinishedListenermypurchasetoken);
}
@覆盖
公共无效的onActivityResult(INT申请code,INT结果code,
意图数据){
如果(!mHelper.handleActivityResult(要求code,
结果code,数据)){
super.onActivityResult(要求code,结果code,数据);
}
}IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener
=新IabHelper.OnIabPurchaseFinishedListener(){
公共无效onIabPurchaseFinished(IabResult结果,
购购){
如果(result.isFailure()){
//处理错误
返回;
}否则如果(purchase.getSku()。等于(ITEM_SKU)){
consumeItem();
buyButton.setEnabled(假);
} }
};公共无效consumeItem(){
mHelper.queryInventoryAsync(mReceivedInventoryListener);
}IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener
=新IabHelper.QueryInventoryFinishedListener(){
公共无效onQueryInventoryFinished(IabResult结果,
库存存货){ 如果(result.isFailure()){
//处理失败
}其他{
mHelper.consumeAsync(inventory.getPurchase(ITEM_SKU)
mConsumeFinishedListener);
}
}
};
IabHelper.OnConsumeFinishedListener mConsumeFinishedListener =
新IabHelper.OnConsumeFinishedListener(){
公共无效onConsumeFinished(购购,
IabResult结果){ 如果(result.isSuccess()){
clickButton.setEnabled(真);
}其他{
//处理错误
}
}
};@覆盖
公共无效的onDestroy(){
super.onDestroy();
如果(mHelper!= NULL)mHelper.dispose();
mHelper = NULL;
}
}
您缺少片段中IabBroadcastReceiver.IabBroadcastListener执行。
目前
公共类Fragment_1扩展片段{
.....
}
修改筛选
公共类Fragment_1扩展片段器具 IabBroadcastReceiver.IabBroadcastListener {
.....
.....
@覆盖
公共无效receivedBroadcast(){
android.util.Log.d(TAG,接收到的广播通知查询库存。);
mHelper.queryInventoryAsync(mGotInventoryListener);
} }
Following this guide on in app purchases. Not sure what I'm doing wrong but any help would be amazing! Quite tricky as its in a fragment not the usual activity. Only thing in logs is ViewRoot's Touch Event : ACTION_UP and then ACTION_DOWN.
public class Fragment_1 extends Fragment {
IabHelper mHelper;
private Button clickButton;
private Button buyButton;
private static final String TAG =
"com.appal.inappbilling";
static final String ITEM_SKU = "android.test.purchased";
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_1,
container, false);
buyButton = (Button) view.findViewById(R.id.buyButton);
buyButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
buttonClicked(v);
}
});
clickButton = (Button) view.findViewById(R.id.clickButton);
clickButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v2) {
buyClick(v2);
}
});
clickButton.setEnabled(false);
String base64EncodedPublicKey =
"MYKEY";
mHelper = new IabHelper(getActivity(), base64EncodedPublicKey);
mHelper.startSetup(new
IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
Log.d(TAG, "In-app Billing setup failed: " +
result);
} else {
Log.d(TAG, "In-app Billing is set up OK");
}
}
});
return view;
}
public void buttonClicked (View v)
{
clickButton.setEnabled(false);
buyButton.setEnabled(true);
}
public void buyClick(View v2) {
mHelper.launchPurchaseFlow(getActivity(), ITEM_SKU, 10001,
mPurchaseFinishedListener, "mypurchasetoken");
}
@Override
public void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (!mHelper.handleActivityResult(requestCode,
resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
}
}
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener
= new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result,
Purchase purchase) {
if (result.isFailure()) {
// Handle error
return;
} else if (purchase.getSku().equals(ITEM_SKU)) {
consumeItem();
buyButton.setEnabled(false);
}
}
};
public void consumeItem() {
mHelper.queryInventoryAsync(mReceivedInventoryListener);
}
IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener
= new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result,
Inventory inventory) {
if (result.isFailure()) {
// Handle failure
} else {
mHelper.consumeAsync(inventory.getPurchase(ITEM_SKU),
mConsumeFinishedListener);
}
}
};
IabHelper.OnConsumeFinishedListener mConsumeFinishedListener =
new IabHelper.OnConsumeFinishedListener() {
public void onConsumeFinished(Purchase purchase,
IabResult result) {
if (result.isSuccess()) {
clickButton.setEnabled(true);
} else {
// handle error
}
}
};
@Override
public void onDestroy() {
super.onDestroy();
if (mHelper != null) mHelper.dispose();
mHelper = null;
}
}
You are missing the IabBroadcastReceiver.IabBroadcastListener implementation in the fragment.
Current
public class Fragment_1 extends Fragment {
.....
}
Modify Like this
public class Fragment_1 extends Fragment implements
IabBroadcastReceiver.IabBroadcastListener{
.....
.....
@Override
public void receivedBroadcast() {
android.util.Log.d(TAG, "Received broadcast notification. Querying inventory.");
mHelper.queryInventoryAsync(mGotInventoryListener);
}
}
这篇关于In App Purchase的什么也没有发生的Android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!