`
全站唯一管_理员
  • 浏览: 1397 次
文章分类
社区版块
存档分类

android拨号器&短信发送

阅读更多

android拨号器:

拨打电话的关键:

(1)在AndroidManifest中添加users-permission,并声明使用权限:

(2)<uses-permission  android:name="android.permission.CALL_PHONE" />这是由于拨打电话属于手机底层的服务,与用户隐私及通话费等相关,因此,程序必须取得相关权限。

(2)通过Intent对象,带入“ACTION_CALL”这个关键词,以及通过Uri.parse()方法将用户要拨打的电话号码带入。 注意传入的Uri的数据,电话的prefix为“tel:”。

(3)最后以startActivity()方法(将自定义的Intent传入),即可完成通过程序直拨打电话。

 

山寨iphone的拨号界面:

一共有十六个个ImageButton,其中



 

表示新建联系人,点击可跳转至手机自带的新建联系人界面,同时会传入拨号界面输入的号码

点击时为右图

 

 

 

表示退格,即点击后会删除上一次输入的一个数字 点击时为右图


          

左边为各种输入按钮,右边为点击时该按钮出现的状态


          

拨号按钮 点击后会跳转至拨打电话界面(拨打上方输入的号码) 点击时为右图
           

发短信按钮 点击后会跳转至发短信界面(下图) 点击时为右图

发送短信界面  第一个框输入联系人电话 第二个框输入信息内容 点击发送按钮即可发送短信

 

拨号界面代码:

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.nono.callactivity"  >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_marginTop="20dp"
        android:layout_height="62dp" >

        <ImageButton
            android:id="@+id/imageButton14"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginTop="20dp"
            android:layout_marginRight="30dp"
            android:background="#00000000"
            android:onClick="delete"
            android:src="@drawable/deleteselect" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="227dp"
            android:layout_height="50dp"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:gravity="center"
            android:textSize="30dp" />

        <ImageButton
            android:id="@+id/imageButton16"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="30dp"
            android:onClick="add"
            android:background="#00000000"
            android:src="@drawable/addselect" />

    </RelativeLayout>

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >



        <TableRow
            android:padding="10dp"
            android:gravity="center_horizontal" 
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <ImageButton
                
                android:id="@+id/imageButton1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="digital_click"
                android:background="#00000000"
                android:src="@drawable/oneselect"
                android:tag="1" />

            <ImageButton
                android:id="@+id/imageButton2"
                android:layout_marginLeft="20dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="digital_click"
                android:background="#00000000"
                android:src="@drawable/twoselect"
                android:tag="2" />

            <ImageButton
                android:id="@+id/imageButton3"
                android:layout_marginLeft="20dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="digital_click"
                android:background="#00000000"
                android:src="@drawable/threeselect"
                android:tag="3" />

        </TableRow>

        <TableRow
            android:padding="10dp"
            android:gravity="center_horizontal" 
            android:id="@+id/tableRow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            >

            <ImageButton
                android:id="@+id/imageButton4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:onClick="digital_click"
                android:src="@drawable/fourselect"
                android:tag="4" />

            <ImageButton
                android:id="@+id/imageButton5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:background="#00000000"
                android:onClick="digital_click"
                android:src="@drawable/fiveselect"
                android:tag="5" />

            <ImageButton
                android:id="@+id/imageButton6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:background="#00000000"
                android:onClick="digital_click"
                android:src="@drawable/sixselect"
                android:tag="6" />

        </TableRow>

        <TableRow
            android:padding="10dp"
            android:gravity="center_horizontal" 
            android:id="@+id/tableRow3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <ImageButton
                android:id="@+id/imageButton8"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:onClick="digital_click"
                android:src="@drawable/sevenselect"
                android:tag="7" />

            <ImageButton
                android:id="@+id/imageButton9"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:background="#00000000"
                android:onClick="digital_click"
                android:src="@drawable/eightselect"
                android:tag="8" />

            <ImageButton
                android:id="@+id/imageButton10"
                android:layout_width="wrap_content"
                android:layout_marginLeft="20dp"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:onClick="digital_click"
                android:src="@drawable/nineselect"
                android:tag="9" />

        </TableRow>

        <TableRow
            android:padding="10dp"
            android:gravity="center_horizontal" 
            android:id="@+id/tableRow4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <ImageButton
                android:id="@+id/imageButton7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:onClick="digital_click"
                android:src="@drawable/xselect"
                android:tag="*" />

            <ImageButton
                android:id="@+id/imageButton11"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:background="#00000000"
                android:onClick="digital_click"
                android:src="@drawable/zeroselect"
                android:tag="0" />

            <ImageButton
                android:id="@+id/imageButton12"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="20dp"
                android:background="#00000000"
                android:onClick="digital_click"
                android:src="@drawable/tenselect"
                android:tag="#" />

        </TableRow>

        <TableRow
            android:padding="10dp"
            android:gravity="center_horizontal" 
            android:id="@+id/tableRow5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <ImageButton
                android:id="@+id/imageButton13"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:onClick="dial"
                android:src="@drawable/callselect" />

            <ImageButton
                android:id="@+id/imageButton15"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="#00000000"
                android:layout_marginLeft="50dp"
                android:onClick="sendmess"
                android:src="@drawable/messageselect" />

        </TableRow>

    </TableLayout>

</LinearLayout>

 其中图片按钮地址为android:src="@drawable/*select"

 

这是一个xml文件 里面是这样定义的:

 

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item           android:state_pressed="false"  android:drawable="@drawable/add" />    
    <item           android:state_pressed="true"   android:drawable="@drawable/addc" /> 
</selector>

 作用是  没有点击时会显示第一张图片(state_pressed="false")  

             点击时会显示第二张图片(android:state_pressed="true")

 

 

发送短信界面代码:

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.nono.sendmessactivity" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <EditText
            android:id="@+id/phone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@+id/textView1"
            android:ems="10" >

            <requestFocus />
        </EditText>

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:text="联系人:" />
    </RelativeLayout>

    <EditText
        android:id="@+id/mess"
        android:gravity="top" 
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:layout_weight="0.00"
        android:ems="10" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:text="发送"
            android:background="#4CD964"
            android:layout_marginTop="29dp"
            android:onClick="send"
            android:textColor="#ffffff" />

    </RelativeLayout>

</LinearLayout>

 就是两个输入框及一个按钮的定义

 

 

 

功能方面

新建联系人

 

	 public void add(View view){  //新建联系人
         Intent it = new Intent(Intent.ACTION_INSERT,Uri.withAppendedPath(Uri.parse("content://com.android.contacts"),"contacts" ));  
         it.setType("vnd.android.cursor.dir/person");  
         String number = textResult.getText().toString();  
         it.putExtra(android.provider.ContactsContract.Intents.Insert.SECONDARY_PHONE,number);  
         startActivity(it);     
     }

 该方法的作用是将输入的号码传给手机自带的新建联系人,这里主要涉及到跳转传值

 

网上搜了一下传值方法:

如果数据比较少,比如只要传一个名字,那么只要j加一句"intent.putExtra("Name", "android");"即可,代码如下:

Intent intent = new Intent();  
intent.setClass(A.this, B.class);  
intent.putExtra("Name", "android");  
startActivity(intent); 

 如果数据比较多,就需要使用 Bundle类了,代码如下:

Intent intent = new Intent(A.this, B.class);  
  
/* 通过Bundle对象存储需要传递的数据 */  
Bundle bundle = new Bundle();  
/*字符、字符串、布尔、字节数组、浮点数等等,都可以传*/  
bundle.putString("Name", "feng88724");  
bundle.putBoolean("Ismale", true);  
  
/*把bundle对象assign给Intent*/  
intent.putExtras(bundle);  
  
startActivity(intent); 

 下一个页面接收数据:

 

 

在A页面上是以Bundle封装了对象,自然在B页面也是以Bundle的方式来解开封装的数据。主要通过"getIntent().getExtras()"方法来获取Bundle,然后再从Bundle中获取数据。 也可以通过" this.getIntent().getStringExtra("Name");"方法直接从Intent中获取数据。

从Bundle获取数据的代码:

        /*获取Intent中的Bundle对象*/  
        Bundle bundle = this.getIntent().getExtras();  
          
        /*获取Bundle中的数据,注意类型和key*/  
        String name = bundle.getString("Name");  
        boolean ismale = bundle.getBoolean("Ismale");  

 

 

拨号器数字输入:

 

 

	public void digital_click(View view){  //点击按钮
        
	       ImageButton btnDigital=(ImageButton) view;  
	       String text=btnDigital.getTag().toString();  
	          currentNum.append(text);
	          display();  
	      }
	public void display(){  //输入号码的显示
	     textResult.setText(currentNum.toString());  
	    } 

 digital_click是与所有输入按钮绑定的方法

 

通过按钮的tag的值来判断是哪一个按钮的触发

将数字存入currentNum(StringBuffer)中

再通过display()显示输入的值

 

删除输入数字:

 

	 public void delete(View view){  //删除输入数字
         if(currentNum.length()>=1){  
             currentNum.delete(currentNum.length()-1, currentNum.length());  
         }  
         if(currentNum.length()==0){  
             Toast toast=Toast.makeText(this,"请输入号码",100);  
             toast.show();  
             display();  
         }  
         textResult.setText(currentNum);  
     }  

删除currentNum中的最后一位输入,并更新显示的数据

 

拨打电话:

 

	 public void dial(View view) {//拨打电话触发
			
		String number=textResult.getText().toString();
 
		Intent intent = new Intent();
		intent.setAction(intent.ACTION_CALL);
		intent.setData(Uri.parse("tel:"+number));
		startActivity(intent);//方法内部会自动为Intent添加类别:  android.intent.category.DEFAULT
		 }

 

 

发送短信:

1)跳转至发送短信界面

	 public void sendmess(View view){//跳转至发送短信界面
		 
		 Intent intent = new Intent(); 
		 intent.setClass(callactivity.this, sendmessactivity.class);  
		 intent.putExtra("number", textResult.getText().toString());  
		 startActivity(intent);  
	 }

 跳转传值

2)发送

	public void send(View v){  
        content=edit.getText().toString();  
        SmsManager smsManager = SmsManager.getDefault();  
        PendingIntent sentIntent = PendingIntent.getActivity(this, 0,  
                super.getIntent(), PendingIntent.FLAG_UPDATE_CURRENT);  
        if (content.length() > 70) { // 大于70个字,拆分  
            List<String> msgs = smsManager.divideMessage(content); // 拆分  
            Iterator<String> iter = msgs.iterator();  
            while (iter.hasNext()) {  
                String msg = iter.next();  
                smsManager.sendTextMessage("10086", null, msg, sentIntent, null);  
            }  
        } else {  
            smsManager.sendTextMessage(phonenumber.getText().toString(), null, content, sentIntent, null);  
        }  
        Toast.makeText(this, "短信发送完成", Toast.LENGTH_SHORT).show();  
    } 

 发送短信核心代码:

 

(1)SmsManager manager = SmsManager.getDefault();   //获得默认的消息管理器

(2)ArrayList<String> list = manager.divideMessage(String txt);  //拆分长短信

(3)manager.sendTextMessage(String phone,null,String content,null,null);  //发送短信

 

 

 

 涉及到的权限:

 

<uses-permission android:name="android.permission.CALL_PHONE"/> 
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission> 
<uses-permission android:name="android.permission.READ_SMS"></uses-permission> 
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
 

 

 

上传的nono.rar是拨号器apk文件的压缩包,欢迎大家下载使用

  • 大小: 71.2 KB
  • 大小: 5 KB
  • 大小: 4.8 KB
  • 大小: 9.4 KB
  • 大小: 11.1 KB
  • 大小: 4.4 KB
  • 大小: 4.4 KB
  • 大小: 8.1 KB
  • 大小: 10.2 KB
  • 大小: 7.7 KB
  • 大小: 9.1 KB
  • 大小: 24 KB
分享到:
评论
1 楼 梳子不爱头发 2017-08-12  
不错

相关推荐

    Android应用开发之拨号器和短信发送器的代码实现

    Android应用开发之拨号器和短信发送器的代码实现

    android拨号器与短信器功能的小软件源码

    综上所述,这个"android拨号器与短信器功能的小软件源码"项目涵盖了Android应用开发的多个核心方面,对于理解Android系统的运作机制和提升开发者技能非常有帮助。通过研究和实践,开发者不仅可以掌握基本的编程技巧...

    电话拨号器与短信发送器

    实现电话拨号与短信发送功能的一个android项目

    Android开发之电话拨号器和短信发送器实现方法

    主要介绍了Android开发之电话拨号器和短信发送器实现方法,结合实例形式较为详细的分析了Android电话拨号器和短信发送器的具体原理与实现步骤,需要的朋友可以参考下

    安卓拨号器

    【安卓拨号器】是一款基于Android操作系统的应用,它的核心功能是为用户提供便捷的电话拨打、联系人管理和短信发送服务。这款应用的源代码对于学习和理解Android开发,特别是通讯录管理和电话功能集成的开发者来说,...

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

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

    android 定时发送短信

    对于短信服务,Android提供了SmsManager类,这是处理短信发送的核心组件。 1. **SmsManager**:这是Android SDK中的一个关键类,允许开发者发送短信。通过调用`SmsManager.getDefault()`可以获取到系统默认的...

    Android Studio拨号界面.rar

    这会启动系统的拨号器,但不会自动拨打电话。代码示例如下: ```java Intent intent = new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:1234567890")); // 替换为要拨打的电话号码 start...

    Android模拟器之间相互发短信代码

    在Android开发过程中,有时我们需要测试应用程序中的短信发送功能,或者模拟多设备间的通信。这篇内容将详细介绍如何在Android模拟器之间实现互相发送短信,并提供相关的代码示例。 首先,理解Android系统中的SMS...

    android打电话发短信

    这里创建了两个`PendingIntent`,分别用于监听短信发送成功(ACTION_SMS_SENT)和短信送达(ACTION_SMS_DELIVERED)的广播事件。发送短信可能需要`SEND_SMS`权限,否则可能会失败。 然而,从Android 6.0(API级别23...

    android 电话拨号

    Android电话拨号器是系统内置的应用程序,允许用户输入电话号码并发起通话。本篇文章将深入探讨Android电话拨号的相关知识点,包括其工作原理、API接口、安全性和自定义实现。 1. **工作原理** Android电话拨号器...

    自定义短信发送demo

    总结来说,"自定义短信发送demo"是一个包含发送短信和定制电话簿功能的示例项目,开发者可以通过学习这个项目来提升自己的Android应用开发技能,特别是与通信相关的部分。通过深入理解并实践这两个功能,可以为用户...

    Android 源码分析-打电话和发短信

    在 Android 中,ITelephony 接口和 ISms 接口是两个重要的接口,分别用于处理电话拨号和短信发送。ITelephony 接口用于处理电话拨号,ISms 接口用于处理短信发送。通过这两个接口,我们可以实现电话拨号和短信发送的...

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

    - `sentPI`和`deliveredPI`是可选的`PendingIntent`,用于监听短信发送状态和送达状态,可以为空。 2. **拨打电话**: - 使用`Intent`对象来启动拨号器或者直接拨打号码。创建一个`Intent`,设置动作为`ACTION_...

    android打电话 发短信

    在Android中,我们可以使用`Intent`来调用系统的拨号器应用,让用户拨打指定的电话号码。以下是核心代码: ```java // 创建拨打电话的Intent Intent callIntent = new Intent(Intent.ACTION_DIAL); callIntent....

    android打电话发短信的eclipse工程

    在Android平台上,开发能够拨打电话和发送短信的应用是一项常见的任务。这个"android打电话发短信的eclipse工程"为你提供了一个现成的框架,让你能够快速地实现这些功能。以下将详细解析这个工程中的关键知识点: 1...

    Android打电话和发短信的小demo

    总的来说,这个“Android打电话和发短信的小demo”覆盖了Android开发中的多个重要知识点:运行时权限管理、Intent的使用、SmsManager的短信发送、联系人数据的读取以及UI交互。对于初学者来说,这是一个很好的实践...

Global site tag (gtag.js) - Google Analytics