Android入门( 三)-拨号功能和短信发送

Android入门( 3)--拨号功能和短信发送

这里主要是实现了手机通信,其主要实现了打电话功能和发送短信功能。

拨号界面如下(由于模拟器屏幕兼容问题,不能正常显示界面,手机上可正常显示):


Android入门( 三)-拨号功能和短信发送

 

点击时每个数字时,imagebutton会更换图片,如下:


Android入门( 三)-拨号功能和短信发送

 

想要实现这一功能,主要是对imagebutton的监听,代码如下:

        imageButton1.setOnTouchListener(new View.OnTouchListener(){              
            public boolean onTouch(View v, MotionEvent event) {       
                     //点击  
                    if(event.getAction() == MotionEvent.ACTION_DOWN){         
                       //重新设置按下时的背景图片    
                       ((ImageButton)v).setImageDrawable(getResources().getDrawable(R.drawable.d1));     
 
                    }else if(event.getAction() == MotionEvent.ACTION_UP){ //松开        
                        //再修改为抬起时的正常图片    
                        ((ImageButton)v).setImageDrawable(getResources().getDrawable(R.drawable.d1));    

                    }    
                    return false;         
            }         
        });

  
 实现拨号功能的代码如下,需要调用ACTION_CALL:

	 public void dial(View view) {
		
		 EditText text=(EditText)findViewById(R.id.editText1);
		 String number=text.getText().toString();

		Intent intent = new Intent();
		

		intent.setAction(intent.ACTION_CALL);

		intent.setData(Uri.parse("tel:"+number));

		startActivity(intent);//方法内部会自动为Intent添加类别:  android.intent.category.DEFAULT

		 }
	

 拨号功能的xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#80bbe7"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="82dp"
        android:ems="10"
        android:background="#ffffffff"
        android:textSize="40sp"
        android:textStyle="bold"
        android:textColor="#ff333333" >

        <requestFocus />
    </EditText>

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

        <TableRow
            android:id="@+id/TableRow04"
            android:layout_width="110dp"
            android:layout_height="wrap_content" >

            <ImageButton
                android:id="@+id/ImageButton01"
                android:layout_width="100dp"
                android:layout_height="70dp"
                android:src="@drawable/c1"
                android:onClick="digital_click"
                android:background="#80bbe7"
                android:tag="1" />

            <ImageButton
                android:id="@+id/ImageButton02"
                android:layout_width="100dp"
                android:layout_height="70dp"
                android:src="@drawable/c2"
                android:onClick="digital_click"
                android:background="#80bbe7"
                android:tag="2"/>

            <ImageButton
                android:id="@+id/ImageButton03"
                android:layout_width="100dp"
                android:layout_height="70dp"
                android:src="@drawable/c3"
                android:onClick="digital_click"
                android:background="#80bbe7"
                android:tag="3" />

        </TableRow>

        <TableRow
            android:id="@+id/TableRow03"
            android:layout_width="110dp"
            android:layout_height="wrap_content" >

            <ImageButton
                android:id="@+id/ImageButton04"
                android:layout_width="100dp"
                android:layout_height="70dp"               
                android:onClick="digital_click"
                android:src="@drawable/c4"
                android:background="#80bbe7"
                android:tag="4" />

            <ImageButton
                android:id="@+id/ImageButton05"
                android:layout_width="100dp"
                android:layout_height="70dp"               
                android:onClick="digital_click"
                android:src="@drawable/c5"
                android:background="#80bbe7"
                android:tag="5" />

            <ImageButton
                android:id="@+id/ImageButton06"
                android:layout_width="100dp"
                android:layout_height="70dp"               
                android:onClick="digital_click"
                android:src="@drawable/c6"
                android:background="#80bbe7"
                android:tag="6"/>

        </TableRow>

        <TableRow
            android:id="@+id/TableRow02"
            android:layout_width="110dp"
            android:layout_height="wrap_content" >

            <ImageButton
                android:id="@+id/ImageButton07"
                android:layout_width="100dp"
                android:layout_height="70dp"
                android:background="#80bbe7"
                android:onClick="digital_click"
                android:src="@drawable/c7"
                android:tag="7"/>

            <ImageButton
                android:id="@+id/ImageButton08"
                android:layout_width="100dp"
                android:layout_height="70dp"
                android:background="#80bbe7"
                android:onClick="digital_click"
                android:src="@drawable/c8"
                android:tag="8" />

            <ImageButton
                android:id="@+id/ImageButton09"
                android:layout_width="100dp"
                android:layout_height="70dp"
                android:background="#80bbe7"
                android:onClick="digital_click"
                android:src="@drawable/c9"
                android:tag="9" />

        </TableRow>

        <TableRow
            android:id="@+id/TableRow01"
            android:layout_width="110dp"
            android:layout_height="wrap_content" >

            <ImageButton
                android:id="@+id/ImageButton10"
                android:layout_width="100dp"
                android:layout_height="70dp"
                android:background="#80bbe7"
                android:onClick="digital_click"
                android:src="@drawable/c10"
                android:tag="*"/>

            <ImageButton
                android:id="@+id/ImageButton11"
                android:layout_width="100dp"
                android:layout_height="70dp"
                android:background="#80bbe7"
                android:onClick="digital_click"
                android:src="@drawable/c0"
                android:tag="0"/>

            <ImageButton
                android:id="@+id/ImageButton12"
                android:layout_width="100dp"
                android:layout_height="70dp"
                android:background="#80bbe7"
                android:onClick="digital_click"
                android:src="@drawable/c11"
                android:tag="#" />

        </TableRow>

    </TableLayout>

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

        <ImageButton
            android:id="@+id/message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0.23"
            android:background="@drawable/b1" />

        <ImageButton
            android:id="@+id/dialer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1.17"
            android:onClick="dial" 
            android:background="@drawable/b2"
             />

        <ImageButton
            android:id="@+id/delete"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="delete"
            android:background="@drawable/b3" />

    </LinearLayout>

</LinearLayout>

 需要注意的是必须要设置相对应的权限:

   <uses-permission android:name="android.permission.CALL_PHONE"/>
   <uses-permission android:name="android.permission.VIBRATE" />

 

短信功能(效果图如下):


Android入门( 三)-拨号功能和短信发送

 

 

实现该功能的主要代码为:

	public void send(View view){
		String telMsg=MainActivity.this.tel.getText().toString();
		String contentMsg=MainActivity.this.content.getText().toString();
		Uri uri=Uri.parse("smsto:"+telMsg);//接收人手机
		Intent it=new Intent();
		it.setAction(Intent.ACTION_SENDTO);//指定action,我要发短信
		it.putExtra("sms_body", contentMsg);//设置信息内容
		it.setType("vnd.android-dir/mms-sms") ;//设置MIME类型
		it.setData(uri);//设置数据,要去的地方
		MainActivity.this.startActivity(it);
	}

 布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

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

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="收信人:" />

            <EditText
                android:id="@+id/tel"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10" >

                <requestFocus android:layout_width="wrap_content" />
            </EditText>
        </TableRow>

        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="内容:" />

            <EditText
                android:id="@+id/content"
                android:layout_width="260px"
                android:layout_height="wrap_content"
                android:ems="10"
                android:lines="6"
                android:background="@layout/edit_bg" />

        </TableRow>

        <Button
            android:id="@+id/send"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:onClick="send"
            android:text="发送短信" />

    </TableLayout>

</LinearLayout>

 

这里我是运用了edit_bg.xml来修饰内容框:

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle">
            <solid
                android:color="#EFEFEF"/>
            <corners
                android:radius="3dip"
                />
            <stroke
                android:width="0.5px"
                android:color="#505050"/>
        </shape>
    </item>
</layer-list>

 
 
相应的,也需要注意的是必须要设置相对应的权限:

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