2013-06-28 3 views
0

У меня есть EditView, где пользователь должен ввести номер телефона. Затем я хочу взять этот номер телефона и позвонить/перевести его в другое мероприятие. Как я мог это сделать?Как отправить номер телефона между действиями?

Это часть моей основной деятельности:

EditText editText = (EditText) findViewById(R.id.editText1); 
    editText.setOnClickListener(this); 

    } 
public void onClick(View src) { 
     Intent serviceIntent = new Intent(this, MyService.class); 
    switch (src.getId()) { 
      case R.id.button1: 
       Log.d(TAG, "onClick: starting service"); 
       EditText editText = (EditText) findViewById(R.id.editText1); 
       if (editText.getText().toString()==""){ 
        Toast.makeText(getApplicationContext(), "Please enter a phone number", Toast.LENGTH_SHORT).show(); 
       } else { 
        pnumber = editText.getText().toString(); 
        startService(serviceIntent); 
        serviceIntent.putExtra(number, pnumber); 

       break; 
       } 

      } 
      } 

     } 

А потом в моей другой деятельности:

Bundle extras = this.getIntent().getExtras(); { 
    if(extras !=null) 
{ 
    String newnumber = extras.getString(number,pnumber); 
    Uri number = Uri.parse(newnumber); 
    Intent callIntent = new Intent(Intent.ACTION_CALL, number); 
    Intent textIntent = new Intent(Intent.ACTION_SENDTO, number); 
} 
} 

public void onClick(View view) { 

    switch (view.getId()) { 
    case R.id.button2: 
     //Log.d(TAG, "onClick: starting call"); 
     startActivity(callIntent); 
     break; 
    case R.id.button3: 
     //Log.d(TAG, "onClick: start text message"); 
     startActivity(textIntent); 
     break; 
     }  
     } 
    } 

Ури продолжает разбор «NEWNUMBER» и дает номер телефона, сделанный из чисел, которые имеют такие буквы (например, я бы получил 639686237, так как n находится на 6-м ключе, e находится на 3-х ключах и т. д.). Он также не распознает число переменных и pnumber.

+2

Вызов 'startService()' ** после ** 'putExtra()'. –

ответ

1

Вы можете отправить свои данные в двух мероприятиях, как, что:

Intent intent = new Intent(CurrentActivity.this, MyService.class); 
intent.putExtra("number", pnumber); 
startActivity(intent); 

И вы можете получить это значение в MyService.Класс:

Intent intent = getIntent(); 
String yourNumber = intent.getStringExtra("number"); 

Или Ваш может поместить свои значения в пачке:

В текущей деятельности:

Bundle bundle = new Bundle(); 
bundle.putString("number", pnumber); 
bundle.putStirng("name", "yourNameValue"); 
bundle.putInt("age", "ageValue"); 
Intent intent = new Intent(CurrentActivity.this, MyService.class); 
intent.putExtras(bundle); 
startActivity(intent); 

И в вашей MYSERVICE деятельности:

Bundle bundle = getIntent().getExtras(); 
String number = bundle.getString("number"); 
String name = bundle.getString("name"); 
int age = bundle.getInt("age"); 

Надеюсь, это вам поможет.

-1

Используется SharedPreferences. Там есть хорошая нить here. С его помощью вы можете сохранить номер в файле предпочтений (видимый только для текущего приложения, а не в файловой системе). Как это:

private final String PREFS_NAME = "savefile"; 
private final String KEY_NUMBER = "num"; 
String strWithTheNumber = "00 123 456 789" 
String strSavedValue = ""; 
SharedPreferences sharedPreferences = ctx.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); 

// Для того, чтобы положить телефон в файле

SharedPreferences.Editor editor = sharedPreferences.edit(); 
editor.putString(KEY_NUMBER, strWithTheNumber); 
editor.commit(); 

// Чтобы получить номер

strSavedValue = sharedPreferences.getString("num", null); 
0

Благодаря intent.putExtra (Название строки, Bundle extra) заявление в первом действии, чтобы получить pnumber во втором действии мы требуем строку имя. Нет в наличии номер (имя в вашем случае) и pnumber переменные во втором классе.

Так экземпляр переменной, имеющей значение числа во втором классе ValueOfNumber, это будет служить в качестве ключа, чтобы получить pnumber от намерения.

Использование

pnumber=extras.getString(ValueOfNumber); //ValueOfNumber is the value of number variable in first activity. 

называют также StartService после Intent.putExtras.

См This answer