安卓系統中集成瞭打電話發短信的功能,隻需要調用就可實現打電話和發短信的功能,
main.xml
[html] <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:textSize="14px"
android:text="電話號碼:" />
<EditText
android:id="@+id/etNum"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/textView"
android:textSize="14px"/>
<EditText
android:id="@+id/etMsg"
android:layout_width="fill_parent"
android:layout_height="100px"
android:layout_below="@+id/etNum"
android:textSize="14px"/>
<Button
android:id="@+id/btn_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/etMsg"
android:textSize="14px"
android:text="發送短信" >
</Button>
<Button
android:id="@+id/btn_call"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/btn_send"
android:layout_alignBottom="@+id/btn_send"
android:layout_toLeftOf="@+id/btn_send"
android:text="撥打電話"
android:textSize="14px" />
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:textSize="14px"
android:text="電話號碼:" />
<EditText
android:id="@+id/etNum"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/textView"
android:textSize="14px"/>
<EditText
android:id="@+id/etMsg"
android:layout_width="fill_parent"
android:layout_height="100px"
android:layout_below="@+id/etNum"
android:textSize="14px"/>
<Button
android:id="@+id/btn_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/etMsg"
android:textSize="14px"
android:text="發送短信" >
</Button>
<Button
android:id="@+id/btn_call"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/btn_send"
android:layout_alignBottom="@+id/btn_send"
android:layout_toLeftOf="@+id/btn_send"
android:text="撥打電話"
android:textSize="14px" />
</RelativeLayout>TestActivity.java
[java] public class TestActivity extends Activity implements OnClickListener {
private EditText etNum;
private EditText etMes;
private Button btnCall;
private Button btnSend;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
etNum=(EditText) findViewById(R.id.etNum);
etMes=(EditText) findViewById(R.id.etMsg);
btnCall=(Button) findViewById(R.id.btn_call);
btnSend=(Button) findViewById(R.id.btn_send);
//註冊偵聽
btnCall.setOnClickListener(this);
btnSend.setOnClickListener(this);
}
public void onClick(View v) {
String pNum = etNum.getText().toString();
if(pNum.equals("")){
Toast.makeText(this, "親,輸入有效的電話號碼!", Toast.LENGTH_SHORT).show();
}else {
//call
if(v.equals(btnCall)){
//生成一個撥打電話的intent
Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+pNum));
//撥號
startActivity(intent);
}
//send
if(v.equals(btnSend)){
String msg=etMes.getText().toString();
if(msg.length()>70){
Toast.makeText(this, "親,短信內容太長啦!", Toast.LENGTH_SHORT).show();
}else if(etMes==null&&msg.equals("")){
Toast.makeText(this, "親,輸入短信內容!", Toast.LENGTH_SHORT).show();
}else{
etMes.setText("正在發送,,,");
//得到SmsManager對象,用於短信的發送
SmsManager manage=SmsManager.getDefault();
//發送短息
manage.sendTextMessage(pNum, null,msg, null, null);
etMes.setText("短信已發送!");
}
}
}
}
}
public class TestActivity extends Activity implements OnClickListener {
private EditText etNum;
private EditText etMes;
private Button btnCall;
private Button btnSend;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
etNum=(EditText) findViewById(R.id.etNum);
etMes=(EditText) findViewById(R.id.etMsg);
btnCall=(Button) findViewById(R.id.btn_call);
btnSend=(Button) findViewById(R.id.btn_send);
//註冊偵聽
btnCall.setOnClickListener(this);
btnSend.setOnClickListener(this);
}
public void onClick(View v) {
String pNum = etNum.getText().toString();
if(pNum.equals("")){
Toast.makeText(this, "親,輸入有效的電話號碼!", Toast.LENGTH_SHORT).show();
}else {
//call
if(v.equals(btnCall)){
//生成一個撥打電話的intent
Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+pNum));
//撥號
startActivity(intent);
}
//send
if(v.equals(btnSend)){
String msg=etMes.getText().toString();
if(msg.length()>70){
Toast.makeText(this, "親,短信內容太長啦!", Toast.LENGTH_SHORT).show();
}else if(etMes==null&&msg.equals("")){
Toast.makeText(this, "親,輸入短信內容!", Toast.LENGTH_SHORT).show();
}else{
etMes.setText("正在發送,,,");
//得到SmsManager對象,用於短信的發送
SmsManager manage=SmsManager.getDefault();
//發送短息
manage.sendTextMessage(pNum, null,msg, null, null);
etMes.setText("短信已發送!");
}
}
}
}
}代碼隻有這麼點,很簡單,但這樣還不能打電話,發短信,需要取得打電話和發短信的權限,
在AndroidManifest.xml中添加權限:
[html] <uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
可以打開2個模擬器測試打電話和發短信,號碼就是模擬器的ID,如:5554,
測試圖:
不知道什麼原因,接受的短信出現亂碼,汗,,,
PS:貌似隻有模擬器的問題,真機沒事。
摘自 柒尐狐的專欄