마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Activity에서 broadcastreceiver 로 변수 보내 저장하는방법 좀..ㅜㅜ

0 추천
안녕하세요

다른게 아니고 BroadcastReceiver 를 통해서 키패드를 통해 앱으로 들어가는 것을 만들었는데요

들어가서 비밀번호를 변경하면 다른 번호를 눌러서 들어갈수 있게....쉽게 말해 비밀번호변경을 하고 싶은겁니다.

근데 static을 써서 설정창에서 변수를 넘겨왔더니 메모리 정리를 누르면 다시 초기화 되버립니다...

변수를 넘겨준후 저장을 해서 비밀번호를 입력한것이 지속적으로 유지 되게 하고싶습니다.

 

public class SettingActivity extends Activity {

 
 private Button btsend;
 static String conpass;
 
 
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.setting);       
      
        btsend = (Button)findViewById(R.id.push);
       
        SharedPreferences pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
        EditText edit1 = (EditText)findViewById(R.id.editpw);      
        String text = pref.getString("editText","");      
        edit1.setText(text);
    }
   
    public void  connBtnClick(View v) {
     if(v==btsend){
     
      
      
      
     }
    }
    public void onPause() {
     super.onPause();
     SharedPreferences pref = getSharedPreferences("pref", Activity.MODE_PRIVATE);
  SharedPreferences.Editor editor = pref.edit();  
  EditText edit1 = (EditText)findViewById(R.id.editpw);
  conpass = edit1.getText().toString();
  editor.putString("pw", edit1.getText().toString());
     editor.commit();
   
  

  
    }         
}           

이런식으로 세팅액티비티에서 입력받는 값을 저장하고 static으로 넘겨주고

public class calltest extends BroadcastReceiver {
 
 
  //public static String ABORT_PHONE_NUMBER = "1234";
      //public static String ABORT_PHONE_NUMBER;
     
 

  
  String phoneNumber = getResultData();
  
  private static final String OUTGOING_CALL_ACTION = "android.intent.action.NEW_OUTGOING_CALL";
  private static final String INTENT_PHONE_NUMBER = "android.intent.extra.PHONE_NUMBER";

  @Override
  public void onReceive(Context context, Intent intent) {
   
 
   
   
   
  
   if (intent.getAction().equals(OUTGOING_CALL_ACTION)) {
    
    // get phone number from bundle
    String phoneNumber = intent.getExtras().getString(
      INTENT_PHONE_NUMBER);
    if ((phoneNumber != null)
      && phoneNumber.equals(SettingActivity.conpass)) {
     Intent i = new Intent(context, TestchatActivity.class);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
           setResultData(null);

    }
    
   }
  }

 
 }

이런식으로 받아왔습니다.

근데 비밀번호를 설정한다음에 다른때는 괜찮은데

메모리 정리버튼 누르고 들어가면 static이 초기화 그러니까 전 번호로 바뀝니다.

예를들어 처음에 1234 설정해놓구 2345로 다시 바꾼후 메모리정리하면 editText에는 2345로 남아있지만

static은 1234 로 바뀝니다 .... 엑티비티에서 브로드캐스트로 넘겨서 비밀번호

유지할수 있도록 방법좀 부탁드릴게요..ㅜㅜ
모하지모해 (300 포인트) 님이 2013년 5월 1일 질문

1개의 답변

+1 추천

onReceive 의 매개변수인 context 를 통해서 SharedPreferences를 사용할수있습니다.

SharedPreferences pref = context.getSharedPreferences("pref", Activity.MODE_PRIVATE);

conpass = pref.getString("pw", "");

이런식으로 저장된 pw를 가져와서 비교해보세요.

얼룩돼지 (15,720 포인트) 님이 2013년 5월 1일 답변
오오 감사합니다!!! 바로 해결됐어요 ㅎㅎ 감사합니다!1!
...