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

CheckBoxPreferenceon/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