1. 程式人生 > >利用Intent 傳送簡訊和打電話

利用Intent 傳送簡訊和打電話

發簡訊

引數的意義:
– destinationAddress:目標電話號碼
– scAddress:簡訊中心號碼,測試可以不填
– text: 簡訊內容
– sentIntent:傳送 –>中國移動 –> 中國移動傳送失敗 –> 返回傳送成功或失敗訊號 –> 後續處理 即,這個意圖包裝了簡訊傳送狀態的資訊
– deliveryIntent: 傳送 –>中國移動 –> 中國移動傳送成功 –> 返回對方是否收到這個資訊 –> 後續處理 即:這個意圖包裝了簡訊是否被對方收到的狀態資訊(供應商已經發送成功,但是對方沒有收到)。

 SmsManager sms = SmsManager.getDefault();
 sms.sendTextMessage("156*******9"
, null, "nihao", sentPI, null);//傳送普通文字資訊 //short port = 1000; //sms.sendDataMessage("156*******9", null, port, null, null, null);//傳送一些非文字,比如加密資料
   /**
     * 直接呼叫簡訊介面發簡訊
     *
     * @param phoneNumber
     * @param message
     */
    public void sendSMS(String phoneNumber, String message) {
        //獲取簡訊管理器
android.telephony.SmsManager smsManager = android.telephony.SmsManager.getDefault(); //拆分簡訊內容(手機簡訊長度限制) List<String> divideContents = smsManager.divideMessage(message); /*for (String text : divideContents) { System.out.println("MainActivity.sendSMS text=" + divideContents.get(0)); // smsManager.sendTextMessage(phoneNumber, null, text, sentPI, deliverPI); }*/
System.out.println("MainActivity.sendSMS" + divideContents.size()); for (int i = 0; i < divideContents.size(); i++) { System.out.println("MainActivity.sendSMS text=" + divideContents.get(i)); } }
///呼叫系統的簡訊介面,這個方法自動設定接收方的號碼 ,經測試可以
    private void send1(String number, String message) {
        Uri uri = Uri.parse("smsto:" + number);
        Intent sendIntent = new Intent(Intent.ACTION_VIEW, uri);
        sendIntent.putExtra("sms_body", message);
        startActivity(sendIntent);
    }

   /**
     * 調起系統發簡訊功能
     *
     * @param phoneNumber
     * @param message
     */
    public void doSendSMSTo(String phoneNumber, String message) {
        if (PhoneNumberUtils.isGlobalPhoneNumber(phoneNumber)) {
            Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:" + phoneNumber));
            intent.putExtra("sms_body", message);
            startActivity(intent);
        }
    }

打電話

方式一:

if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                    Toast.makeText(MainActivity.this, "無許可權", Toast.LENGTH_SHORT).show();
                    ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE}, 1);//申請許可權
                    // TODO: Consider calling
                    //    ActivityCompat#requestPermissions
                    // here to request the missing permissions, and then overriding
                    //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                    //                                          int[] grantResults)
                    // to handle the case where the user grants the permission. See the documentation
                    // for ActivityCompat#requestPermissions for more details.


                    return;
                } else {
                    Toast.makeText(MainActivity.this, "有許可權", Toast.LENGTH_SHORT).show();
                    Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "10086"));
                    startActivity(intent);
                }

PS:這種方式需要動態申請一下許可權,如果已經有許可權了,會去直接撥打電話。

方式二:

  Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + "10086"));
                startActivity(intent);

PS:這種方式的撥打電話,不需要關注,有沒有打電話的這個許可權,不過它只會跳轉到撥打電話的介面,而不會直接去撥打電話。

許可權:

    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <!--打電話許可權的設定:-->
    <uses-permission android:name="android.permission.CALL_PHONE"/>

這裡需要強調一下:在6.0以後,雖然有些許可權需要動態獲取,但是在清單檔案中,也要新增上相應的許可權。

相關推薦

利用Intent 傳送簡訊打電話

發簡訊 引數的意義: – destinationAddress:目標電話號碼 – scAddress:簡訊中心號碼,測試可以不填 – text: 簡訊內容 – sentIntent:傳送 –&

傳送簡訊打電話的方法

傳送簡訊的方法 有兩種方法可以實現傳送簡訊, 其一是使用 intent-startActivity ,    U RI 資料格式為" smsto:num ", 呼叫的 action 為 Intent.ACTION_SENDTO :

Android入門 利用SmsManager傳送簡訊

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

iOS呼叫系統傳送簡訊郵件分享

  //傳送郵件 -(void)sendMail:(NSString*)subject content:(NSString*)content{ MFMailComposeViewController*controller = [[[MFMailComposeViewCon

通過超級終端連線簡訊貓, 用at指令發簡訊打電話

1、連線簡訊貓 開始--〉程式--〉附件--〉通訊--〉超級終端 選擇簡訊貓連線的com口,設定波特率(如果是手機卡發簡訊,需要設定為19200)。 2、輸入指令發簡訊 在簡訊貓介面輸入 at at+cmgf=1 at+cmgs=手機號 >簡訊內容 簡訊

【Android 開發教程】使用Intent傳送簡訊

本章節翻譯自《Beginning-Android-4-Application-Development》,如有翻譯不當的地方,敬請指出。使用SmsManager類,可以在自己編寫的程式內部發送簡訊,而不需要呼叫系統的簡訊應用。然而,有的時候呼叫系統內建的簡訊應用會更加方便。這時

Intent傳送簡訊(跳轉到傳送介面)

    在main.xml中: <LinearLayout     xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="fill_parent"

Nagios無法傳送簡訊郵件

檢視/usr/local/nagios/var/nagios.log 發現: SERVICE NOTIFICATION: nagiosadmin;gc1;check-host-alive;CRIT

安卓開發中傳送簡訊的方法 APP內單發簡訊 群發簡訊 APP跳轉到簡訊頁 單條簡訊 多條簡訊Intent跳轉

1.APP內部直接傳送短息 包括髮送單條簡訊 傳送多條簡訊 APP內部發送簡訊首先要獲取一個傳送簡訊的許可權 <uses-permission android:name="android.permission.SEND_SMS"/> 安卓6.0以上的手機要動態獲取到這個許可

如何利用fiddler篡改傳送請求擷取伺服器資訊

一、斷點的兩種方式 1、before response:在request請求未到達伺服器之前打斷 2、after response:在伺服器響應之後打斷 二、全域性打斷 1、全域性打斷就是中斷fiddler捕獲的所有請求,設定:rules>automatic breakpoint>befo

python利用第三方模組,傳送簡訊驗證碼

對於初學者,如何利用第三方python開發包傳送簡訊驗證碼,下面是具體的實現和記錄過程! 環境:虛擬機器上centos7平臺,python3.7版本; 首先,申請賬號的部分就省略了  1. 獲得appid和appSecret 在"我的應用"-&

利用ContentProvider讀取系統應用的資訊(簡訊聯絡人)

上面兩篇我們講了ContentProvider如何使用 Android進階:步驟2:ContentProvider初體驗 Content Provider 解析URI的方法 UriMatcher的用法和自帶的解析方法 1.現在我們將如何通過某一個應用讀系統短訊息

利用API傳送接收訊息,本程式碼測試全通過

~_~一個程式設計師的淘寶店: 點選開啟連結 using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; namespace Set

通過Intent傳送接收返回資料

一、在Activity中通過Intent傳送資料給下一個活動 //在當前活動配置帶有傳送資料的intent Intent intent = new Intent(context,nextActivity.class); intent.putExtra("Extra_dat

javaweb使用JSON格式利用雲之訊平臺傳送簡訊(單條)

package foreiger.utils; import net.sf.json.JSONObject; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; im

python學習筆記23(利用python發郵件簡訊

利用python發郵件和簡訊 發郵件: 以163郵箱為例,要利用SMTP伺服器 #發郵件的庫 import smtplib #郵件文字 from email.mime.text import MIMEText #建立基礎物件 #SMTP伺服器 SMTPServer = "smtp.

GPRS模組SIM9001傳送簡訊傳送簡訊),包括PDUtext兩種模式

在超級終端輸入: At OK 返回OK則說明你的模組可以正常工作,否則出現故障。 第一、文字模式下發送簡訊流程 文字模式下發送資訊基本分三步驟: 1.設定傳送模式 AT+CMGF=1 CMGF為0是以PDU模式傳送,為1則是以文字方式傳送。 2.接收方電話號碼 AT+CMGS=

iOS應用呼叫系統打電話、發簡訊發郵件功能

摘要: 在應用程式內,呼叫系統的功能來實現打電話、發簡訊和發郵件,通過電話號碼或者郵箱,直接跳轉到系統的功能介面。 PS:除錯好像只能真機除錯,模擬器沒有反應,真機就可以跳轉,不知道是不是必須真機,但方法肯定是可行的。 1、打電話 應用內呼叫系統打電話有兩種方式: 1

iOS 實現傳送郵件簡訊

- (void)businessContactWithMail { Class mailClass = (NSClassFromString(@"MFMailComposeViewController")); if (mailClass != nil) { // We

OpenWRT使用4G模組上網傳送簡訊

1、配置ppp配置參考:https://blog.csdn.net/qianguozheng/article/details/50543704結果就是:lsusb能發現HUAWEI的4G模組,ifconfig能看到3g-ppp0口2、測試上網功能ping www.baidu.