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;
        }       
        }
     }

Uri 不断解析“newnumber”并给出一个由具有这些字母的数字组成的电话号码(例如,我会得到 639686237,因为 n 在 6 键上,e 在 3 键上等)它也没有识别变量 number 和 pnumber。

4

3 回答 3

1

您可以在以下两个活动中发送数据:

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

您可以在 MyService.class 中获取此值:

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");

我希望这对你有帮助。

于 2013-06-28T14:11:19.850 回答
0

由于第一个活动中的intent.putExtra(String name, Bundle extra)语句,要在第二个活动中获取pnumber,我们需要字符串name。第二类中没有number(在您的情况下为name)和pnumber变量的范围。

因此,在第二个类ValueOfNumber中实例化一个具有 number 值的变量,这将作为从意图中获取pnumber的键。

利用

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

在 Intent.putExtras 之后也调用 startService。

参考这个答案

于 2013-06-28T13:47:28.793 回答
-1

使用 SharedPreferences。这里有一个很好的线程。有了它,您可以将号码保存在首选项文件中(仅对当前应用程序可见,而不在文件系统中可见)。像这个:

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);
于 2013-06-28T13:40:10.397 回答