Я создал класс для обработки важных изменений данных, таких как статус покупки приложений и другие вещи.
Для этой цели я создал класс, который выполняет настройку и чтение значений. но проблема возникает всякий раз, когда я вызываю метод appIsPurchased(), результат является истинным, пока он не был изменен с момента установки приложения и его первого начального запуска.
Это мой код:
/**
* Created by neemasa on 5/29/14.
* This class handles more crucial data values within app.
*/
public class AppCore {
private SharedPreferences settings;
private String keyPurchase = "app_purchased";
private Context context;
public AppCore(Context context){
this.context = context;
settings = PreferenceManager.getDefaultSharedPreferences(context);
}
public void setAppInPurchasedMode(String status){
if (status.equals("successful")){
settings.edit().putBoolean(keyPurchase, true).commit();
}else if (status.equals("failed")){
settings.edit().putBoolean(keyPurchase, false).commit();
}
}
public boolean appIsPurchased(){
boolean purchased = false;
if (settings.getBoolean(keyPurchase,true)){
purchased = true;
}
return purchased;
}
}
Вопрос 1: что-то не так с моим кодом? если есть тогда, почему appIsPurchased() всегда возвращает true?
Вопрос 2: все ли значения в общих предпочтениях являются истинными по умолчанию?
Между тем, когда я использую этот класс в своем коде, тост "Купил!" запускается, даже когда приложение работает в первый раз.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AppCore appCore = new AppCore(getApplicationContext());
if (appCore.appIsPurchased()){
Toast.makeText(getApplicationContext(),"Purchased!",Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(getApplicationContext(),"Not Purchased!",Toast.LENGTH_SHORT).show();
}
}