选择是否在收件箱中存储已发送的短信

时间:2013-06-24 20:11:52

标签: android sms sharedpreferences smsmanager

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

这是我在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);

但是我对于如何将上述代码放入首选项时我一无所知。提前感谢您的帮助!

1 个答案:

答案 0 :(得分: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);
}