0

我有一个应用程序,用户可以在其中输入电话号码和消息,然后单击“发送”,它将消息发送到他们设置的电话号码。当用户发送消息时,该特定消息也会出现在他们手机上的消息收件箱中。我想要完成的是制作一个复选框首选项,用户可以在其中选中或取消选中他们发送的消息是否将保存到他们的消息收件箱中。

这是我在 prefs.xml 中的复选框首选项

<CheckBoxPreference
            android:key="key_addvalues"
            android:summary="Choose whether to store sent messages in your inbox"
            android:title="Store messages"
            android:defaultValue="true"
        />

这是 main.xml

public class EasyTextActivity extends Activity {

    Button buttonSend;
    EditText textPhoneNo;
    EditText textSMS;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
            String userTheme = prefs.getString("key_theme", "dark");

            if (userTheme.equals("dark"))
                setTheme(R.style.HoloTheme);
            else if (userTheme.equals("light"))
                setTheme(R.style.HoloLight);
            else if (userTheme.equals("lightdark"))
                setTheme(R.style.HoloLightDark);

            String addvalues = prefs.getString("key_addvalues", "on");


            Button btn = (Button) findViewById(R.id.buttonSend);  
            registerForContextMenu(btn);  

            buttonSend = (Button) findViewById(R.id.buttonSend);
            textPhoneNo = (EditText) findViewById(R.id.editTextPhoneNo);
            textSMS = (EditText) findViewById(R.id.editTextSMS);

            buttonSend.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {

                  String phoneNo = textPhoneNo.getText().toString();
                  String sms = textSMS.getText().toString();
                  try {               
                    SmsManager smsManager = SmsManager.getDefault();
                    smsManager.sendTextMessage(phoneNo, null, sms, null, null);
                    ContentValues values = new ContentValues();                       
                    values.put("address", phoneNo);                               
                    values.put("body", sms);                              
                    getContentResolver().insert(Uri.parse("content://sms/sent"), values);
                    Toast.makeText(getApplicationContext(), "Message Sent!", Toast.LENGTH_LONG).show();} 
                    catch (Exception e) {
                    Toast.makeText(getApplicationContext(),
                        "Unable to send message",
                        Toast.LENGTH_LONG).show();
                    e.printStackTrace();
                  }

                }
            }); 
        }

如您所见,我成功添加了用户可以从列表中选择主题的首选项,但是我似乎无法弄清楚如何添加首选项,他们可以选择是否将邮件保存到收件箱。

为了将消息保存到他们的收件箱,我在消息发送时添加了以下代码:

ContentValues values = new ContentValues();                       
                    values.put("address", phoneNo);                               
                    values.put("body", sms);                              
                    getContentResolver().insert(Uri.parse("content://sms/sent"), values);

但是,我不知道我应该如何将上述代码变成偏好。提前感谢您的帮助!

4

1 回答 1

0

CheckBoxPreference保存布尔值而不是on/off字符串。在您的情况下,要检索值就足以调用:

final boolean save = prefs.getBoolean("key_addvalues", true);

然后检查save变量:

if(save){
    ContentValues values = new ContentValues();                       
    values.put("address", phoneNo);                               
    values.put("body", sms);                              
    getContentResolver().insert(Uri.parse("content://sms/sent"), values);
}
于 2013-06-24T21:00:33.417 回答