Android呼叫系統的打電話和發簡訊功能
一、打電話
1、新增打電話的許可權在manifast檔案中。
<uses-permission android:name="android.permission.CALL_PHONE"/>
2、使用Uri.parse(String a)建立Uri。
Uri uri = Uri.parse("tel:"+1008611);
3、建立打電話的意圖。
Intent intent = new Intent(Intent.ACTION_CALL, uri);
4、啟動系統打電話頁面。
startActivity(intent);
二、發簡訊
方式一:直接傳送簡訊
1、添加發送簡訊的許可權在manifast檔案中。
<uses-permission android:name="android.permission.SEND_SMS"/>
2、獲取android.telephony.SmsManager物件(PS:android.telephony.gsm.SmsManager已經廢棄)。
SmsManager smsManager = SmsManager.getDefault();
3、宣告一個簡訊內容的常量。
String content = "Hello World!";
4、將簡訊內容分塊,傳送一條簡訊最多能夠傳送70箇中文字元,超過這個值系統會將簡訊內容分為多塊進行傳送。
ArrayList<String> list = smsManager.divideMessage(content);
5、分條進行傳送。
for (int i = 0; i < list.size(); i++) {
smsManager.sendTextMessage("10086", null, list.get(i), null, null);
}
方式二:呼叫系統的傳送簡訊的介面,需要輸入號碼
1、建立意圖
Intent intentFinalMessage = new Intent(Intent.ACTION_VIEW);
2、設定型別
intentFinalMessage.setType("vnd.android-dir/mms-sms");
3、開啟系統簡訊介面
startActivity(intentFinalMessage);
方式三:呼叫系統的傳送簡訊的介面,不需要輸入號碼
1、建立Uri,設定行為和號碼
Uri uri2 = Uri.parse("smsto:"+10086);
2、建立意圖。
Intent intentMessage = new Intent(Intent.ACTION_VIEW,uri2);
3、開啟系統簡訊介面,號碼已經填寫,只需填寫要傳送
startActivity(intentMessage);
1、destinationAddress:給這個號碼傳送簡訊。
2、scAddress:使用這個號碼傳送簡訊,為null時表示使用本機發送。
3、text:簡訊內容。
4、sentIntent:傳送簡訊成功或失敗之後傳送廣播。
5、deliveryIntent:對方接受到簡訊之後傳送廣播。
四、傳送廣播的簡訊傳送
1、註冊廣播
註冊自己傳送簡訊的廣播:
SEND_SMS_ACTION = "3";
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
//根據結果碼判斷是否傳送成功
if(Activity.RESULT_OK == getResultCode()){
Toast.makeText(MainActivity.this, "傳送成功", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "傳送失敗", Toast.LENGTH_SHORT).show();
}
}
}, new IntentFilter(SEND_SMS_ACTION));
註冊對方接受到簡訊的廣播:
BACK_SMS_ACTION = "4";
registerReceiver(new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
//只要接收到這個廣播,表示接收簡訊成功
Toast.makeText(MainActivity.this, "對方接收到簡訊", Toast.LENGTH_SHORT).show();
}
}, new IntentFilter(BACK_SMS_ACTION));
2、傳送 簡訊,監聽傳送情況、監聽對方接受情況,如果簡訊傳送成功或失敗
PendingIntent.getBroadcast(MainActivity.this, 0, new Intent(SEND_SMS_ACTION), 0)會發送廣播,
如果對方接受到簡訊
PendingIntent.getBroadcast(MainActivity.this, 0, new Intent(BACK_SMS_ACTION), 0));會發送廣播
for (int i = 0; i < list.size(); i++) {
smsManager.sendTextMessage("10086", null, list.get(i),
PendingIntent.getBroadcast(MainActivity.this, 0, new Intent(SEND_SMS_ACTION), 0),
PendingIntent.getBroadcast(MainActivity.this, 0, new Intent(BACK_SMS_ACTION), 0));
}
五、使用smsManager傳送其它格式的簡訊
deliveryIntent)
其它引數一樣,第三個引數
short destinationPort,給這個號碼的這個埠號傳送這條簡訊,簡訊內容為位元組陣列格式。
給這個號碼傳送多條簡訊。