我正在尝试开发一个简单的应用程序,当我购买一个活动时,它会启用按钮。应用程序重新启动后重置
我的代码工作正常,但问题是当我退出应用程序并重新打开它时,以前在购买后启用的按钮,它们变为禁用状态,但不允许再次重新购买。
(我需要做的是在购买时)
那么如何保持启用按钮保持启用状态,当我重新启动应用程序?
这里是我的代码:
public class MainScreen extends ActionBarActivity {
private static final String TAG = "com.aseng90_test.smiap2";
IabHelper mHelper;
static final String ITEM_SKU = "com.aseng90_test.smiap2_button5";
static final String ITEM_SKU2 = "com.aseng90_test.smiap2_buyact2";
static final String ITEM_SKU3 = "com.aseng90_test.smiap2_buyact3";
static final String ITEM_SKU4 = "com.aseng90_test.smiap2_buyall";
public Button Activity1;
public Button Activity2;
public Button Activity3;
public Button buyButton;
public Button buyAct2;
public Button buyAct3;
public Button buyAll;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_screen);
buyButton = (Button) findViewById(R.id.buyButton);
buyAct2 = (Button) findViewById(R.id.buyact2);
buyAct3 = (Button) findViewById(R.id.buyact3);
buyAll = (Button) findViewById(R.id.buyall);
Activity1 = (Button) findViewById(R.id.act1);
Activity2 = (Button) findViewById(R.id.act2);
Activity3 = (Button) findViewById(R.id.act3);
Activity1.setEnabled(false);
Activity2.setEnabled(false);
Activity3.setEnabled(false);
String base64EncodedPublicKey =
"";
mHelper = new IabHelper(this, 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");
}
}
});
}
public void buyClick(View view) {
mHelper.launchPurchaseFlow(this, ITEM_SKU, 10001,
mPurchaseFinishedListener, "mypurchasetoken");
}
public void buyAct2 (View view){
mHelper.launchPurchaseFlow(this, ITEM_SKU2, 10002, mPurchaseFinishedListener, "buyact2");
}
public void buyAct3 (View view){
mHelper.launchPurchaseFlow(this,ITEM_SKU3, 10003, mPurchaseFinishedListener, "buyact3");
}
public void buyAll (View view){
mHelper.launchPurchaseFlow(this, ITEM_SKU4,10004, mPurchaseFinishedListener, "buyall");
}
@Override
protected 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;
}
if (purchase.getSku().equals(ITEM_SKU)) {
Activity1.setEnabled(true);
buyButton.setEnabled(false);
}
if (purchase.getSku().equals(ITEM_SKU2)){
Activity2.setEnabled(true);
buyAct2.setEnabled(false);
}
if (purchase.getSku().equals(ITEM_SKU3)){
Activity3.setEnabled(true);
buyAct3.setEnabled(false);
}
if (purchase.getSku().equals(ITEM_SKU4)) {
Activity1.setEnabled(true);
Activity2.setEnabled(true);
Activity3.setEnabled(true);
buyAll.setEnabled(false);
buyButton.setEnabled(false);
buyAct2.setEnabled(false);
buyAct3.setEnabled(false);
}
}
};
public void Activity1 (View view)
{
startActivity(new Intent(MainScreen.this, Click1.class));
}
public void Activity2 (View view){
startActivity(new Intent(MainScreen.this, Activity2.class));
}
public void Activity3 (View view){
startActivity(new Intent(MainScreen.this, Activity3.class));
}
@Override
public void onDestroy() {
super.onDestroy();
if (mHelper != null) mHelper.dispose();
mHelper = null ;
}
非常感谢
好了,所以我使用的共享偏好来拯救我的活动状态,但是当我尝试启用与其他免费按钮一个按钮,它只是正常工作,但它不适用于应用程序内购买按钮(只是它让我购买,但购买后永远不会启用停用的按钮)所以我不知道在应用程序购买和共享偏好之间是否存在冲突在我的代码?
这是我的编辑的代码:
包com.aseng90_test.smiap2;
import android.content.Intent;导入 android.content.SharedPreferences;导入 android.support.v7.app.ActionBarActivity;导入android.os.Bundle; import android.util.Log;导入android.view.View;导入 android.widget.Button;导入android.widget.Toast;
import com.aseng90_test.smiap2.util.IabHelper;进口 com.aseng90_test.smiap2.util.IabResult;进口 com.aseng90_test.smiap2.util.Purchase;
公共类MainScreen扩展ActionBarActivity {
private static final String TAG = "com.aseng90_test.smiap2"; IabHelper mHelper; static final String ITEM_SKU = "com.aseng90_test.smiap2_button55"; static final String ITEM_SKU2 = "com.aseng90_test.smiap2_buyact22"; static final String ITEM_SKU3 = "com.aseng90_test.smiap2_buyact33"; static final String ITEM_SKU4 = "com.aseng90_test.smiap2_buyall_1"; private Button Activity1; private Button Activity2; private Button Activity3; private Button buyButton; private Button buyAct2; private Button buyAct3; private Button buyAll;
个人按钮EAct4;私人按钮Act4;
private SharedPreferences prefs; private String prefName = "MyPref"; boolean Activity1_isEnabled; boolean Activity2_isEnabled; boolean Activity3_isEnabled; boolean Act4_isEnabled; boolean buyButton_isEnabled; boolean buyAct2_isEnabled; boolean buyAct3_isEnabled; boolean buyAll_isEnabled; boolean EAct4_isEnabled; private static final String Activity1_state = "Activity1_state"; private static final String Activity2_State = "Activity2_state"; private static final String Activity3_State = "Activity3_state"; private static final String buyButton_State = "buyButton_state"; private static final String buyAct2_State = "buyAct2_state"; private static final String buyAct3_State = "buyAct3_state"; private static final String buyAll_State = "buyAll_state"; private static final String Act4_State = "Act4_state"; private static final String EAct4_State = "EAct4_state"; public void buyClick(View view) { mHelper.launchPurchaseFlow(this, ITEM_SKU, 10001, mPurchaseFinishedListener, "mypurchasetoken"); } public void buyAct2 (View view){ mHelper.launchPurchaseFlow(this, ITEM_SKU2, 10002, mPurchaseFinishedListener, "buyact2"); } public void buyAct3 (View view){ mHelper.launchPurchaseFlow(this,ITEM_SKU3, 10003, mPurchaseFinishedListener, "buyact3"); } public void buyAll (View view){ mHelper.launchPurchaseFlow(this, ITEM_SKU4,10004, mPurchaseFinishedListener, "buyall"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_screen); buyButton = (Button) findViewById(R.id.buyButton); buyAct2 = (Button) findViewById(R.id.buyact2); buyAct3 = (Button) findViewById(R.id.buyact3); buyAll = (Button) findViewById(R.id.buyall); Activity1 = (Button) findViewById(R.id.act1); Activity2 = (Button) findViewById(R.id.act2); Activity3 = (Button) findViewById(R.id.act3); EAct4 = (Button) findViewById(R.id.eact4); Act4 = (Button) findViewById(R.id.act4); String base64EncodedPublicKey = ""; mHelper = new IabHelper(this, 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"); } } }); } public void EACT4 (View view) { EAct4.setEnabled(false); Act4.setEnabled(true); } public void ACT4 (View view){ Toast.makeText(MainScreen.this, "ACt4 Clicked", Toast.LENGTH_LONG).show(); } @Override protected 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; } if (purchase.getSku().equals(ITEM_SKU)) { Activity1.setEnabled(true); buyButton.setEnabled(false); } if (purchase.getSku().equals(ITEM_SKU2)){ Activity2.setEnabled(true); buyAct2.setEnabled(false); } if (purchase.getSku().equals(ITEM_SKU3)){ Activity3.setEnabled(true); buyAct3.setEnabled(false); } if (purchase.getSku().equals(ITEM_SKU4)) { Activity1.setEnabled(true); Activity2.setEnabled(true); Activity3.setEnabled(true); buyAll.setEnabled(false); buyButton.setEnabled(false); buyAct2.setEnabled(false); buyAct3.setEnabled(false); } } }; public void Activity1 (View view) { startActivity(new Intent(MainScreen.this, Click1.class)); } public void Activity2 (View view){ startActivity(new Intent(MainScreen.this, Activity2.class)); } public void Activity3 (View view){ startActivity(new Intent(MainScreen.this, Activity3.class)); } @Override public void onDestroy() { super.onDestroy(); if (mHelper != null) mHelper.dispose(); mHelper = null ; } @Override protected void onPause(){ super.onPause(); if (Act4.isEnabled()){ Act4_isEnabled = true; } else { Act4_isEnabled = false; } if (Activity1.isEnabled()){ Activity1_isEnabled = true; } else { Activity1_isEnabled = false; } if (Activity2.isEnabled()){ Activity2_isEnabled = true; } else { Activity2_isEnabled = false; } if (Activity3.isEnabled()){ Activity3_isEnabled = true; } else { Activity3_isEnabled = false; } if (buyButton.isEnabled()){ buyButton_isEnabled = true; } else { buyButton_isEnabled = false; } if (buyAct2.isEnabled()){ buyAct2_isEnabled = true; } else { buyAct2_isEnabled = false; } if (buyAct3.isEnabled()){ buyAct3_isEnabled = true; } else { buyAct3_isEnabled = false; } if (buyAll.isEnabled()){ buyAll_isEnabled = true; } else { buyAll_isEnabled = false; } prefs = getSharedPreferences(prefName,MODE_PRIVATE); SharedPreferences.Editor editor = prefs.edit(); editor.putBoolean(Act4_State,Act4_isEnabled); editor.putBoolean(EAct4_State,EAct4_isEnabled); editor.putBoolean(Activity1_state,Activity1_isEnabled); editor.putBoolean(Activity2_State,Activity2_isEnabled); editor.putBoolean(Activity3_State,Activity3_isEnabled); editor.putBoolean(buyButton_State,buyButton_isEnabled); editor.putBoolean(buyAct2_State,buyAct2_isEnabled); editor.putBoolean(buyAct3_State,buyAct3_isEnabled); editor.putBoolean(buyAll_State,buyAll_isEnabled); editor.apply(); } @Override protected void onResume(){ super.onResume(); prefs = getSharedPreferences(prefName,MODE_PRIVATE); Act4.setEnabled(prefs.getBoolean(Act4_State,false)); Activity1.setEnabled(prefs.getBoolean(Activity1_state,false)); Activity2.setEnabled(prefs.getBoolean(Activity2_State,false)); Activity3.setEnabled(prefs.getBoolean(Activity3_State,false)); EAct4.setEnabled(prefs.getBoolean(EAct4_State,true)); buyButton.setEnabled(prefs.getBoolean(buyButton_State,true)); buyAct2.setEnabled(prefs.getBoolean(buyAct2_State,true)); buyAct3.setEnabled(prefs.getBoolean(buyAct3_State,true)); buyAll.setEnabled(prefs.getBoolean(buyAll_State,true)); }
再次感谢
为什么你不在DB中存储这些值? – VVB 2015-03-02 05:13:32
如何做到这一点? @VVB – 2015-03-02 05:19:06
存储跟踪购买的值。 – VVB 2015-03-02 05:26:15