java - 在用户捐款/未捐款后隐藏/显示 SrartApp 广告

标签 java android

我在 MainActivity.java 中有一个 StartApp 广告,在另一个 Activity 中有一个 Donate 选项。我想在用户从另一个 Activity (名为:About)捐款后,将广告隐藏在 MainActivity 中。我使用 SharedPreferences 来指定用户是否捐赠。但是我的广告有问题,即使用户不付款,它也不会出现!

* 提示: 在我添加下面的代码之前,广告没有问题。

下面的代码解释了我如何使用 SharedPreferenceshideBanner(); 方法等....

MainActivity.java:

...
protected SharedPreferences prefs;
    protected static final String PREFS_KEY = "donation";
    private Banner banner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        StartAppSDK.init(this, "...", false);
        setContentView(R.layout.activity_main);

        prefs = getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE);

        if(prefs.getBoolean("don_ban", true))
        {
            banner = (Banner) findViewById(R.id.startAppBanner);
            if(banner != null)
            {
                banner.hideBanner();
            }
        }
        else
        {
            if(banner != null)
            {
                banner.showBanner();
            }
        }

...

About.java:

...
protected SharedPreferences prefs;
protected SharedPreferences.Editor editor;

...

private IabHelper.OnConsumeFinishedListener consumeFinishedListener = new IabHelper.OnConsumeFinishedListener() {
        @Override
        public void onConsumeFinished(Purchase purchase, IabResult result) {

            if(result.isSuccess())
            {
                prefs = getSharedPreferences(MainActivity.PREFS_KEY, Context.MODE_PRIVATE);
                editor = prefs.edit();
                editor.putBoolean("don_ban", true);
                editor.commit();
            }
            else
            {
                Snackbar.make(findViewById(R.id.coordinatorlayout_about), R.string.unknown_error, Snackbar.LENGTH_SHORT).show();
            }
        }
    };
...

最佳答案

一旦用户捐赠,您就将 don_ban 设置为 true。如果 don_ban 为真,则隐藏横幅。问题是,当您从 SharedPreferences 获取 don_ban 时,您的默认设置为真。 don_ban 在用户捐赠之前从未创建过,因此,将返回默认值 true 并隐藏横幅。

将你的代码改成这样,它会起作用:

...
protected SharedPreferences prefs;
    protected static final String PREFS_KEY = "donation";
    private Banner banner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        StartAppSDK.init(this, "...", false);
        setContentView(R.layout.activity_main);

        prefs = getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE);

        if(prefs.getBoolean("don_ban", false)) //Changed default to false
        {
            banner = (Banner) findViewById(R.id.startAppBanner);
            if(banner != null)
            {
                banner.hideBanner();
            }
        }
        else
        {
            if(banner != null)
            {
                banner.showBanner();
            }
        }

...

我所做的只是将您的 if 语句的 prefs.getBoolean() 默认设置为 false,以便它默认显示广告,而不是隐藏它。

关于java - 在用户捐款/未捐款后隐藏/显示 SrartApp 广告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38427971/

相关文章:

java - 通用断言失败

java - 将 double 分为整数和小数部分

java - 如何为DataStore设置jndi.properties?

android - 我在哪里可以找到 Android Studio 中的第三方库源?

Android:如何强制布局或任何 View 在倾斜时具有固定大小?

java - fragment recyclerview 不同的 View 类型不起作用

java - 如何从 JSONObject 填充字符串数组以在 ListView 中使用

java - 无法从 Spring boot 的 RestController 检索对象到 Angular 6 服务

java - 为什么 Google Precondition Library 中的 Checkers 接受对象而不是字符串

android - 在 Android 中创建类似网格的布局