2013-06-24 3 views
0

У меня есть приложение, в котором пользователь может ввести номер телефона и сообщение и нажать «отправить», и он отправит сообщение на номер телефона, на который он установил , Когда пользователь отправляет сообщение, это конкретное сообщение также появляется в папке входящих сообщений на телефоне. То, что я пытаюсь выполнить, делает выбор флажка, где пользователь может проверить или снять флажок, будут ли сохраненные сообщения отправляться в их почтовые ящики сообщений.Выберите, следует ли хранить отправленные sms-сообщения в папке «Входящие»

Вот мой флажок предпочтения в 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); 

Однако я невежественный о том, как именно я предполагаю, чтобы сделать приведенный выше код в предпочтение. Спасибо заранее за помощь!

ответ

0

CheckBoxPreference сохраняет значение типа boolean, а не строку 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); 
} 
+0

Я не совсем уверен, куда поместить 'окончательное логическое значение, кроме = префов. getBoolean ("key_addvalues", true); 'Потому что независимо от того, где я размещаю приложение, я получаю ошибку времени выполнения. 'If ​​(save) {', похоже, не имеет значения, находится ли он в коде или нет, это является окончательным булевым, вызывающим сбой. Любые идеи о том, как исправить это? – user1798956

+0

Есть ли у вас какие-либо идеи о том, как это исправить? Я действительно потерян здесь – user1798956