2013-06-28 38 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

在** putExtra()之後調用'startService()'**。 –

回答

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 (String name,Bundle extra)聲明在第一次活動中,得到pnumber在第二個活動中,我們要求字符串名稱。沒有範圍號碼名稱在你的情況)和號碼變量在第二類。

所以實例具有第二類ValueOfNumber數的值的變量,這將作爲重點得到pnumber從意圖。

使用

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

Intent.putExtras後也叫startService。

參考This answer