Android アプリケーションでPushBotを使用していますが、通知を有効または無効にするオプションをユーザーに提供したいと考えています。PushBotsのWeb サイトでは、コードPushbots.getInstance().setRegStatus(false);
を実行するとこれが実行されると書かれています。
そのため、設定ページを作成し、CheckboxPreference オプションを作成しました。チェックを外すと通知を無効にし (コードを実行)、チェックを外すと通知を再度有効にします (同じコードをtrue
代わりに実行しますfalse
)。
ここに私の設定ページ(Prefs.java)があります:
import com.pushbots.push.Pushbots;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
public class Prefs extends PreferenceActivity implements OnSharedPreferenceChangeListener {
boolean CheckboxPreference;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(getBaseContext(), "Preferences saved!",Toast.LENGTH_LONG ).show();
}
public void onStart(Intent intent, int startId) {
getPrefs();
}
private void getPrefs() {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(getBaseContext());
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
final String key) {
if (key.equals(notifBox)) {
// handle setting enabled or disabled depending on value of preference
if (sharedPreferences.getBoolean(key, false)) {
Pushbots.getInstance().setRegStatus(true);
} else {
Pushbots.getInstance().setRegStatus(false);
} } } }
そして私の好みのレイアウト(preferences.xml)
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<CheckBoxPreference
android:title="Notifications"
android:defaultValue="true"
android:summary="Recieve push notifications from IGNITE?"
android:key="notifBox"
android:textIsSelectable="false" />
</PreferenceScreen>
そして、私の Main Activity は次の 2 行を実行します。
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).registerOnSharedPreferenceChangeListener(this);
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
アプリは、閉じて再度開いた後でも設定を記憶していますが、オプションの状態に関係なく、プッシュ通知を受け取ります.
多くのチュートリアル、ここの質問、および Android 開発者 Web サイトのリソースに目を通しましたが、私のニーズに合っているか、私のインスタンスで機能しているようには見えません。
任意の提案をいただければ幸いです。:)