Android实现打电话,发短信

打电话和发短信 

功能描述:

        1). 点击打电话”: 进入拨号界面
        2). 长按打电话”: 直接拨打电话
        3). 点击发短信”: 进入编辑短信界面
        4). 长按发短信”: 直接将短信发送出去

     页面布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
 
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="电话号码: " />
 
        <EditText
            android:id="@+id/et_main_number"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="请输入号码">
        </EditText>
    </LinearLayout>
     
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
 
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="短信内容: " />
 
        <EditText
            android:id="@+id/et_main_sms"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="请输入短信">
        </EditText>
    </LinearLayout>
     
     
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
 
        <Button
            android:id="@+id/btn_main_call"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="打电话" />
 
        <Button
            android:id="@+id/btn_main_send"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="发短信" />
 
    </LinearLayout>
 
</LinearLayout>

     JAVA实现代码: 

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.view.View.OnLongClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
 
public class MainActivity extends Activity implements OnLongClickListener {
 
    private EditText et_main_number;
    private EditText et_main_sms;
    private Button btn_main_call;
    private Button btn_main_send;
    private OnClickListener onClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(v==btn_main_call) {//点击打电话
                //Toast.makeText(MainActivity.this, "点击打电话", 0).show();
                 
                //1). 创建一个Intent(隐式)
                //08-28 03:27:09.976: I/ActivityManager(1222): Displayed com.android.dialer/.DialtactsActivity: +535ms
                String action = "android.intent.action.DIAL";
                action = Intent.ACTION_DIAL;//一样的
                Intent intent = new Intent(action);
                //2). 携带数据
                String number = et_main_number.getText().toString();
                intent.setData(Uri.parse("tel:"+number)); //<data android:scheme="tel" />
                //3). startActivity(intent)
                startActivity(intent);
            }else if(v==btn_main_send) {//点击发短信
                Toast.makeText(MainActivity.this, "点击发短信", 0).show();
                //1). 创建一个Intent(隐式)
                //08-28 04:00:02.420: I/ActivityManager(1222): Displayed com.android.mms/.ui.ComposeMessageActivity: +132ms
                Intent intent = new Intent(Intent.ACTION_SENDTO);//android.intent.action.SENDTO
                //2). 携带数据(号码/内容)
                String number = et_main_number.getText().toString();
                String sms = et_main_sms.getText().toString();
                intent.setData(Uri.parse("smsto:"+number));
                //携带额外数据
                intent.putExtra("sms_body", sms);
                //3). startActivity(intent)
                startActivity(intent);
            }
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         
        //初始化视图对象
        et_main_number = (EditText) findViewById(R.id.et_main_number);
        et_main_sms = (EditText) findViewById(R.id.et_main_sms);
        btn_main_call = (Button) findViewById(R.id.btn_main_call);
        btn_main_send = (Button) findViewById(R.id.btn_main_send);
        //给视图对象设置点击监听
        btn_main_call.setOnClickListener(onClickListener);
        btn_main_send.setOnClickListener(onClickListener);
        //给视图对象设置长按监听
        btn_main_call.setOnLongClickListener(this);
        btn_main_send.setOnLongClickListener(this);
    }
     
    @Override
    public boolean onLongClick(View v) {
        if(v==btn_main_call) {//长按打电话
            //Toast.makeText(MainActivity.this, "长按打电话", 0).show();
            //1). 创建一个Intent(隐式)
            //08-28 03:38:59.717: I/ActivityManager(1222): Displayed com.android.phone/.PrivilegedOutgoingCallBroadcaster: +570ms
            Intent intent = new Intent(Intent.ACTION_CALL);//android.intent.action.CALL
            //2). 携带数据
            String number = et_main_number.getText().toString();
            intent.setData(Uri.parse("tel:"+number));
            //3). startActivity(intent)
            startActivity(intent);
             
        }else if(v==btn_main_send) {//长按发短信
            Toast.makeText(MainActivity.this, "长按发短信", 0).show();
             
            //1). 得到SmsManager的对象
            SmsManager smsManager = SmsManager.getDefault();
            //2). 发送文本信息(短信)
            String number = et_main_number.getText().toString();
            String sms = et_main_sms.getText().toString();
            smsManager.sendTextMessage(number, null, sms, null, null);
        }
        return true;//不会再触发点击事件(表示此事件已经被消费了)
    }
}

 部分参数说明:

        •进入电话拨打界面的意图: Intent.ACTION_DIAL

        •进入短信编辑界面的意图: Intent.ACTION_SENDTO

        •拨打电话的意图: Intent.ACTION_CALL

        •发送短信的工具类: SmsManager

        •需要的权限:

                打电话的权限: android.permission.CALL_PHONE

                发短信的权限: android.permission.SEND_SMS

       •拨打电话的Uri: tel:110

       •进入短信界面的电话Uri : smsto:110

       •携带额外短信数据的标识名为: sms_body

最后加上对应的权限

    <!-- 打电话的权限 -->
    <uses-permission android:name="android.permission.CALL_PHONE"/>
    <!-- 发短信的权限 -->
    <uses-permission android:name="android.permission.SEND_SMS"/>

到这代码就结束了。

     功能演示截图:

                点击调出拨号界面:

                              

                长按直接拨号:

                                 

                点击打开短信编辑页面:

                                   

                长按直接发送短信:

                                              

总结:

/**
1. 界面布局
    1). 分析: 垂直的LinearLayout--->水平的LinearLayout
    2). 编码
2. 在Activity中初始化需要操作的视图对象
3. 给button设置点击监听
4. 给button设置长按监听
5. 点击打电话进入拨号界面
    1). 创建一个Intent(隐式)
    2). 携带数据
    3). startActivity(intent)
     
6. 长按打电话进入打电话的界面
    1). 创建一个Intent(隐式)
    2). 携带数据
    3). startActivity(intent)
     
7. 点击发短信进入短信编辑界面
    1). 创建一个Intent(隐式)
    2). 携带数据(号码/内容)
    3). startActivity(intent)
     
8. 长按发短信直接发短信
    1). 得到SmsManager的对象
    2). 发送文本信息(短信)
*/

 

 注:此文章来自尚硅谷http://www.atguigu.com/课程学习资料总结

  • 6
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值