2025-05-17

安卓系統中集成瞭打電話發短信的功能,隻需要調用就可實現打電話和發短信的功能,

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:貌似隻有模擬器的問題,真機沒事。

 

摘自  柒尐狐的專欄 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *