`

调用打电话和发短信、收短信接口、发Email (Call, Dial, SMSManager, Broadcast, Email)

阅读更多

打电话和发短信可以说是最核心的应用了,本文就来阐述它的调用方法。可以分为直接调用--直接电话或短信发出,已经间接调用--进入拨号或短信撰写页面,等待用户确认内容后由用户发出.

先看代码效果截图:

 

先编写主界面Activaty,创建类CallAndSms作为为默认启动页 
view plaincopy to clipboardprint?
01.package jtapp.callandsms;   
02.  
03.import java.util.List;   
04.  
05.import android.app.Activity;   
06.import android.content.Intent;   
07.import android.net.Uri;   
08.import android.os.Bundle;   
09.import android.telephony.SmsManager;   
10.import android.view.View;   
11.import android.view.View.OnClickListener;   
12.import android.widget.Button;   
13.import android.widget.Toast;   
14.  
15.public class CallAndSms extends Activity {   
16.    /** Called when the activity is first created. */  
17.    @Override  
18.    public void onCreate(Bundle savedInstanceState) {   
19.        super.onCreate(savedInstanceState);   
20.        setContentView(R.layout.main);   
21.          
22.        setComponent();   
23.    }   
24.       
25.    private void setComponent() {   
26.        Button bt1 = (Button) findViewById(R.id.Button01);   
27.        bt1.setOnClickListener(new OnClickListener() {   
28.            @Override  
29.            public void onClick(View v) {   
30.                Intent intent = new Intent(   
31.                        Intent.ACTION_CALL, Uri.parse("tel:10010"));   
32.                startActivity(intent);   
33.            }   
34.        });   
35.        Button bt2 = (Button) findViewById(R.id.Button02);   
36.        bt2.setOnClickListener(new OnClickListener() {   
37.            @Override  
38.            public void onClick(View v) {   
39.                String smsContent = "102";   
40.                // note: SMS must be divided before being sent     
41.                SmsManager sms = SmsManager.getDefault();   
42.                List<String> texts = sms.divideMessage(smsContent);   
43.                for (String text : texts) {   
44.                    sms.sendTextMessage("10010", null, text, null, null);   
45.                }   
46.                // note: not checked success or failure yet   
47.                Toast.makeText(   
48.                        CallAndSms.this,    
49.                        "短信已发送",   
50.                        Toast.LENGTH_SHORT ).show();   
51.            }   
52.        });   
53.           
54.        Button bt3 = (Button) findViewById(R.id.Button03);   
55.        bt3.setOnClickListener(new OnClickListener() {   
56.            @Override  
57.            public void onClick(View v) {   
58.                Intent intent = new Intent(   
59.                        Intent.ACTION_DIAL, Uri.parse("tel:10010"));   
60.                startActivity(intent);   
61.            }   
62.        });   
63.        Button bt4 = (Button) findViewById(R.id.Button04);   
64.        bt4.setOnClickListener(new OnClickListener() {   
65.            @Override  
66.            public void onClick(View v) {   
67.                Uri uri = Uri.parse("smsto:10010");           
68.                Intent it = new Intent(Intent.ACTION_SENDTO, uri);           
69.                it.putExtra("sms_body", "102");           
70.                startActivity(it);    
71.            }   
72.        });   
73.    }   
74.}  
package jtapp.callandsms;

import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class CallAndSms extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        setComponent();
    }
    
 private void setComponent() {
  Button bt1 = (Button) findViewById(R.id.Button01);
  bt1.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    Intent intent = new Intent(
      Intent.ACTION_CALL, Uri.parse("tel:10010"));
    startActivity(intent);
   }
  });
  Button bt2 = (Button) findViewById(R.id.Button02);
  bt2.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    String smsContent = "102";
    // note: SMS must be divided before being sent  
    SmsManager sms = SmsManager.getDefault();
    List<String> texts = sms.divideMessage(smsContent);
    for (String text : texts) {
     sms.sendTextMessage("10010", null, text, null, null);
    }
    // note: not checked success or failure yet
    Toast.makeText(
      CallAndSms.this, 
      "短信已发送",
      Toast.LENGTH_SHORT ).show();
   }
  });
  
  Button bt3 = (Button) findViewById(R.id.Button03);
  bt3.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    Intent intent = new Intent(
      Intent.ACTION_DIAL, Uri.parse("tel:10010"));
    startActivity(intent);
   }
  });
  Button bt4 = (Button) findViewById(R.id.Button04);
  bt4.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    Uri uri = Uri.parse("smsto:10010");        
    Intent it = new Intent(Intent.ACTION_SENDTO, uri);        
    it.putExtra("sms_body", "102");        
    startActivity(it); 
   }
  });
 }
}

主界面ui定义 main.xml 代码:

view plaincopy to clipboardprint?
01.<?xml version="1.0" encoding="utf-8"?>  
02.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
03.    android:orientation="vertical" android:layout_width="fill_parent"  
04.    android:layout_height="fill_parent" android:gravity="center">  
05.    <TextView android:layout_width="fill_parent"  
06.        android:layout_height="wrap_content" android:text="Direct Method:"  
07.        android:gravity="center" />  
08.    <Button android:text="拨打10010 ke fu 电话" android:id="@+id/Button01"  
09.        android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>  
10.    <Button android:text="短信10010查余额" android:id="@+id/Button02"  
11.        android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>  
12.    <TextView android:text="InDirect Method:" android:id="@+id/TextView01"  
13.        android:layout_width="wrap_content" android:layout_height="wrap_content" />  
14.    <Button android:text="拨打10010ke fu 电话" android:id="@+id/Button03 

15.        android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>  
16.    <Button android:text="短信10010查余额" android:id="@+id/Button04"  
17.        android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>  
18.</LinearLayout>  
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical" android:layout_width="fill_parent"
 android:layout_height="fill_parent" android:gravity="center">
 <TextView android:layout_width="fill_parent"
  android:layout_height="wrap_content" android:text="Direct Method:"
  android:gravity="center" />
 <Button android:text="拨打10010ke fu 电话" android:id="@+id/Button01"

  android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
 <Button android:text="短信10010查余额" android:id="@+id/Button02"
  android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
 <TextView android:text="InDirect Method:" android:id="@+id/TextView01"
  android:layout_width="wrap_content" android:layout_height="wrap_content" />
 <Button android:text="拨打10010ke fu 电话" android:id="@+id/Button03"

  android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
 <Button android:text="短信10010查余额" android:id="@+id/Button04"
  android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>

用于监听短信到来的Broadcast消息的文件,

ReceiverSMS.java 代码:

view plaincopy to clipboardprint?
01.package jtapp.callandsms;   
02.  
03.import android.content.BroadcastReceiver;   
04.import android.content.Context;   
05.import android.content.Intent;   
06.import android.os.Bundle;   
07.import android.telephony.SmsMessage;   
08.import android.widget.Toast;   
09.  
10.public class ReceiverSMS extends BroadcastReceiver {   
11.  
12.    @Override  
13.    public void onReceive(Context context, Intent intent) {   
14.        if (intent.getAction().equals(   
15.                "android.provider.Telephony.SMS_RECEIVED")) {   
16.            StringBuilder sb = new StringBuilder();   
17.            Bundle bundle = intent.getExtras();   
18.            if (bundle != null) {   
19.                Object[] pdus = (Object[]) bundle.get("pdus");   
20.                SmsMessage[] msgs = new SmsMessage[pdus.length];   
21.                for (int i = 0; i < pdus.length; i++) {   
22.                    msgs[i] = SmsMessage   
23.                        .createFromPdu((byte[]) pdus[i]);   
24.                }   
25.                for (SmsMessage s : msgs) {   
26.                    sb.append("收到来自");   
27.                    sb.append(s.getDisplayOriginatingAddress());   
28.                    sb.append("的SMS, 内容:");   
29.                    sb.append(s.getDisplayMessageBody());   
30.                }   
31.                Toast.makeText(   
32.                        context,    
33.                        "收到了短消息: " + sb.toString(),   
34.                        Toast.LENGTH_LONG).show();   
35.            }   
36.           
37.        }   
38.    }   
39.}  
package jtapp.callandsms;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;

public class ReceiverSMS extends BroadcastReceiver {

 @Override
 public void onReceive(Context context, Intent intent) {
  if (intent.getAction().equals(
    "android.provider.Telephony.SMS_RECEIVED")) {
   StringBuilder sb = new StringBuilder();
   Bundle bundle = intent.getExtras();
   if (bundle != null) {
    Object[] pdus = (Object[]) bundle.get("pdus");
    SmsMessage[] msgs = new SmsMessage[pdus.length];
    for (int i = 0; i < pdus.length; i++) {
     msgs[i] = SmsMessage
      .createFromPdu((byte[]) pdus[i]);
    }
    for (SmsMessage s : msgs) {
     sb.append("收到来自");
     sb.append(s.getDisplayOriginatingAddress());
     sb.append("的SMS, 内容:");
     sb.append(s.getDisplayMessageBody());
    }
    Toast.makeText(
      context, 
      "收到了短消息: " + sb.toString(),
      Toast.LENGTH_LONG).show();
   }
  
  }
 }
}
 

AndroidManifest.xml中权限、activity和receiver的设定:

view plaincopy to clipboardprint?
01.<?xml version="1.0" encoding="utf-8"?>   
02.<manifest xmlns:android="http://schemas.android.com/apk/res/android"  
03.    package="jtapp.callandsms" android:versionCode="1" android:versionName="1.0">   
04.    <application android:icon="@drawable/icon" android:label="@string/app_name"  
05.        android:debuggable="true">   
06.        <activity android:name=".CallAndSms" android:label="@string/app_name">   
07.            <intent-filter>   
08.                <action android:name="android.intent.action.MAIN" />   
09.                <category android:name="android.intent.category.LAUNCHER" />   
10.            </intent-filter>   
11.        </activity>   
12.        <receiver android:name=".ReceiverSMS" android:enabled="true">   
13.            <intent-filter>   
14.                <action android:name="android.provider.Telephony.SMS_RECEIVED" />   
15.            </intent-filter>   
16.        </receiver>   
17.    </application>   
18.    <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>   
19.    <uses-permission android:name="android.permission.SEND_SMS"></uses-permission>   
20.    <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>   
21.</manifest>   
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="jtapp.callandsms" android:versionCode="1" android:versionName="1.0">
 <application android:icon="@drawable/icon" android:label="@string/app_name"
  android:debuggable="true">
  <activity android:name=".CallAndSms" android:label="@string/app_name">
   <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
  </activity>
  <receiver android:name=".ReceiverSMS" android:enabled="true">
   <intent-filter>
    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
   </intent-filter>
  </receiver>
 </application>
 <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
 <uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
 <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
</manifest> 

 

 

补充,发Email 代码片段:

view plaincopy to clipboardprint?
01.//Email   
02.Button bt5 = (Button) findViewById(R.id.Button05);   
03.bt5.setOnClickListener(new OnClickListener() {   
04.    @Override  
05.    public void onClick(View v) {   
06.        // Setup the recipient in a String array   
07.        String[] mailto = { "noam@gmail.com" };   
08.        // Create a new Intent to send messages   
09.        Intent sendIntent = new Intent(Intent.ACTION_SEND);   
10.        // Write the body of theEmail   
11.        String emailBody = "You're password is: ";   
12.        // Add attributes to the intent   
13.        //sendIntent.setType("text/plain"); // use this line for testing   
14.                                            // in the emulator   
15.        sendIntent.setType("message/rfc822"); // use this line for testing    
16.                                                // on the real phone   
17.        sendIntent.putExtra(Intent.EXTRA_EMAIL, mailto);   
18.        sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Your Password");   
19.        sendIntent.putExtra(Intent.EXTRA_TEXT, emailBody);   
20.        startActivity(sendIntent);   
21.    }   
22.});  
  //Email
  Button bt5 = (Button) findViewById(R.id.Button05);
  bt5.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    // Setup the recipient in a String array
    String[] mailto = { "noam@gmail.com" };
    // Create a new Intent to send messages
    Intent sendIntent = new Intent(Intent.ACTION_SEND);
    // Write the body of theEmail
    String emailBody = "You're password is: ";
    // Add attributes to the intent
    //sendIntent.setType("text/plain"); // use this line for testing
             // in the emulator
    sendIntent.setType("message/rfc822"); // use this line for testing 
              // on the real phone
    sendIntent.putExtra(Intent.EXTRA_EMAIL, mailto);
    sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Your Password");
    sendIntent.putExtra(Intent.EXTRA_TEXT, emailBody);
    startActivity(sendIntent);
   }
  });

 

扩展阅读:

Android下调用收发短信邮件等

http://sean.huanglijiang.com/article.asp?id=218

android 短信发送全过程

http://apps.hi.baidu.com/share/detail/15096826

 

E:\Android\Android学习视频\6open source prj\apk 自动升级与电话短信调用

分享到:
评论

相关推荐

    运用Android Studio实现打电话和发短信

    对于打电话功能,需要添加`Manifest.permission.CALL_PHONE`权限,这样应用才能调用系统的拨号器拨打电话。对于发送短信功能,需要`Manifest.permission.SEND_SMS`权限,使得应用能够创建并发送短信。在`...

    Android实现打电话和发短信

    在Android应用开发中,有时需要集成打电话和发送短信的功能,以提供更丰富的用户体验。下面将详细解释如何在Android中实现这两个功能。 ### 调用系统拨号盘打电话 #### 跳转到拨号盘 ```java Intent intent = new ...

    android打电话发短信的eclipse工程

    这个"android打电话发短信的eclipse工程"为你提供了一个现成的框架,让你能够快速地实现这些功能。以下将详细解析这个工程中的关键知识点: 1. **Android权限管理**: 在Android中,无论是拨打电话还是发送短信,...

    android打电话发短信

    以上就是关于“Android打电话发短信”的基础知识。通过理解并熟练运用这些技术,你可以为用户提供方便快捷的通信功能。在`PhoneDemo`这样的项目中,你可能还会发现更多关于如何整合这些功能的实际示例代码和详细设计...

    跳转到打电话,发短信的界面以及直接打电话发短信

    本文将详细讲解如何实现"跳转到打电话、发短信的界面"以及"直接打电话发短信"的技术细节。 一、跳转到打电话界面 1. Android系统: 在Android中,我们可以使用`Intent`来启动拨号界面。首先,创建一个`Intent`对象...

    Android通讯录姓名手机号获取,打电话发短信功能。

    在Android平台上,获取用户的联系人信息以及实现打电话和发送短信的功能是常见的应用场景,尤其是在开发社交或者通讯类应用时。下面将详细讲解如何在Android Studio中实现这些功能。 首先,我们需要了解Android的...

    andriod发送短信和打电话的小程序

    - 调用`SmsManager`的`sendTextMessage()`方法,传入接收方电话号码、短信内容和一个`PendingIntent`用于处理发送成功或失败的回调。例如: ```java SmsManager smsManager = SmsManager.getDefault(); ...

    Android代码(打电话发短信).zip

    本压缩包"Android代码(打电话发短信).zip"中可能包含了一个名为"Pro05(打电话发短信)"的项目或文件,它很可能是为了演示如何在Android应用中执行这些操作。 1. **拨打电话**: 在Android中,拨打电话通常使用`...

    Android调用打电话(Call Phone)

    在Android平台上,调用打电话功能是一项常见的操作,它允许用户通过应用程序直接拨打电话号码。本文将深入探讨如何在Android应用中实现这一功能,包括所需的权限、API调用以及实际编码实践。 首先,为了在Android...

    android打电话 发短信

    总的来说,Android提供了丰富的API和Intent机制,使得开发者能够轻松实现打电话和发短信的功能。然而,需要注意的是,涉及到隐私和通讯功能的操作,一定要遵守相关法律法规,并确保用户知情和同意,否则可能会引发...

    android常用的API接口调用

    Android 常用的 API 接口调用 Android 操作系统提供了许多有用的 API 接口,开发者可以通过这些接口调用来实现各种功能。本文将对 Android 常用的 API 接口调用进行归类和详细介绍。 显示网页 要在 Android 应用...

    android打电话收短信实例

    如果你想直接拨打电话,可以将`ACTION_DIAL`改为`ACTION_CALL`,但请注意这需要`CALL_PHONE`权限。 其次,接收短信涉及到注册一个`BroadcastReceiver`。在AndroidManifest.xml中,你需要声明一个能监听`android....

    手机拨打电话发送短信

    在Android平台上,开发一款能够拨打电话和发送短信的应用是一个常见的需求。这涉及到对Android系统API的深入理解和使用,特别是与电话服务和短信服务相关的部分。接下来,我们将详细探讨如何实现这些功能。 首先,...

    ocx-eyebeam-dial 网页js调用eyebeam拨号

    **标题详解:**"ocx-eyebeam-dial 网页js调用eyebeam拨号" 这个标题描述了一个技术解决方案,即使用JavaScript(js)在网页环境中调用EyeBeam软电话进行拨号操作。"ocx-eyebeam-dial"很可能是一个特定的组件或插件...

    Android从零开始—电话+短信(二十)

    在本篇博客“Android从零开始—电话+短信(二十)”中,我们将深入探讨Android系统中的电话管理和短信服务,这对于任何想要开发涉及通讯功能的Android应用开发者来说都是至关重要的知识。我们将首先介绍Android的...

    Andriod打电话、发短信功能小程序

    这个“Andriod打电话、发短信功能小程序”提供了基础的实践案例,适用于初学者进行学习和练习。下面我们将详细探讨这些功能的实现原理及步骤。 首先,我们要了解Android权限管理。在Android系统中,访问电话和短信...

    四,android四大组件基础介绍及打电话,发短信简单应用 &单元测试

    打电话可以使用Intent的ACTION_CALL或者ACTION_DIAL动作,配合tel:协议启动电话拨号器;发送短信则需要权限(SEND_SMS)并使用SmsManager类的相关方法。在实现这类功能时,需要考虑到用户隐私和权限管理,以及在后台...

    android打电话,发短信,获取通讯录、通话记录、短信记录

    在Android平台上,与电话、短信和联系人相关的功能是应用程序开发中的重要部分。这些功能使得应用能够集成到用户的日常通信中,提供便利的服务。本文将详细介绍如何通过代码实现在Android中进行电话拨打、短信发送、...

    打电话、发短信和邮件,取得手机IMEI号

    在Android平台上,开发一款应用程序以实现打电话、发送短信和邮件,并获取手机的IMEI号,是常见的功能需求。本文将详细讲解如何使用Delphi XE6进行这些操作,并重点介绍IMEI号的获取方法。 首先,IMEI...

Global site tag (gtag.js) - Google Analytics