Android组件通讯(打电话)

一、Intent的使用完成Android拨号通讯功能

拨打电话的程序,相比之前设计的美食刊或者是小应用组件不同的地方,是涉及到了Intent完成组件的通讯。使用到了拨号的权限,调用Android本身封装的应用程序来实现该功能。大致步骤如下:

1.配置文件:activity_main.xml——主要负责页面的布局以及设置每个控件的id

2.Java类:同样的需要加载界面中的各个控件,并且对使用到的控件定义以及初始化值。由于是实现拨号功能,所以用到了EditText textResult用来展示拨号内容。而对于拨号内容是会随着用户添加而不断发生变化的,并且可能会使用到*、#等字符,所以在这里选择StringBuffer currentNum来存取用户点触的号码串。

3.事件处理:由于拨号器每个键都会触发事件,而且基本上都是相同的事件处理操作。所以在activity_main.xml中就已经对每个button进行了事件的定义。digital_click():数字按钮点击后事件调用方法;dial(View view)通话键调用的方法;delete(View view)点击删除事件调用方法。该部分内容终最关键的在于拨号时使用了Intent,将数据以uri传入调用系统库的拨号功能。

①得到EdiText,获取电话号码
②创建意图的引用:Intent intrnt = new Intent();
③设置意图对象的动作setAction()
④拨打电话号码setData()
⑤开启意图statActivity(Intent)
⑥修改安全异常:AndroidMainfest.xml中的permissions-->android.permission.CALL_PHONE

public void dial(View view){//通话键调用的方法
		EditText text=(EditText)findViewById(R.id.editText1);
		String number=text.getText().toString();
		
		Intent intent=new Intent();//intent方法调用系统库拨号功能
		intent.setAction(intent.ACTION_CALL);
		intent.setData(Uri.parse("tel:"+number));//将数据以uri传入。
		startActivity(intent);
	}

 具体代码如下:

<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="@drawable/background"
    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="85dp"
        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="244dp"
        android:layout_marginTop="12dp" >

        <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="60dp"
                android:onClick="digital_click"
                android:src="@drawable/b1"
                android:tag="1" 
				android:textSize="30sp"
				android:background="@drawable/my_button_background"
                
                />

            <ImageButton
                android:id="@+id/ImageButton02"
                android:layout_width="100dp"
                android:layout_height="60dp"
                android:src="@drawable/b2"
                android:onClick="digital_click"
                android:background="@drawable/my_button_background"
                android:tag="2"/>

            <ImageButton
                android:id="@+id/ImageButton03"
                android:layout_width="100dp"
                android:layout_height="60dp"
                android:src="@drawable/b3"
                android:onClick="digital_click"
                android:background="@drawable/my_button_background"
                android:tag="3" />

        </TableRow>

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

            <ImageButton
                android:id="@+id/ImageButton4"
                android:layout_width="100dp"
                android:layout_height="60dp"               
                android:onClick="digital_click"
                android:src="@drawable/b4"
                android:background="@drawable/my_button_background"
                android:tag="4" />

            <ImageButton
                android:id="@+id/ImageButton5"
                android:layout_width="100dp"
                android:layout_height="60dp"               
                android:onClick="digital_click"
                android:src="@drawable/b5"
                android:background="@drawable/my_button_background"
                android:tag="5" />

            <ImageButton
                android:id="@+id/ImageButton06"
                android:layout_width="100dp"
                android:layout_height="60dp"               
                android:onClick="digital_click"
                android:src="@drawable/b6"
                android:background="@drawable/my_button_background"
                android:tag="6"/>

        </TableRow>

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

            <ImageButton
                android:id="@+id/ImageButton7"
                android:layout_width="100dp"
                android:layout_height="60dp"
                android:background="@drawable/my_button_background"
                android:onClick="digital_click"
                android:src="@drawable/b7"
                android:tag="7"/>

            <ImageButton
                android:id="@+id/ImageButton8"
                android:layout_width="100dp"
                android:layout_height="60dp"
                android:background="@drawable/my_button_background"
                android:onClick="digital_click"
                android:src="@drawable/b8"
                android:tag="8" />

            <ImageButton
                android:id="@+id/ImageButton9"
                android:layout_width="100dp"
                android:layout_height="60dp"
                android:background="@drawable/my_button_background"
                android:onClick="digital_click"
                android:src="@drawable/b9"
                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="60dp"
                android:background="@drawable/my_button_background"
                android:onClick="digital_click"
                android:src="@drawable/b10"
                android:tag="*"/>

            <ImageButton
                android:id="@+id/ImageButton11"
                android:layout_width="100dp"
                android:layout_height="60dp"
                android:background="@drawable/my_button_background" 
                android:onClick="digital_click"
                android:src="@drawable/b11"
                android:tag="0"/>

            <ImageButton
                android:id="@+id/ImageButton12"
                android:layout_width="100dp"
                android:layout_height="60dp"
                android:background="@drawable/my_button_background"
                android:onClick="digital_click"
                android:src="@drawable/b12"
                android:tag="#" />

        </TableRow>

    </TableLayout>

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

        <ImageButton
            android:id="@+id/message"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:background="@drawable/messa" />

        <ImageButton
            android:id="@+id/dialer"
             android:layout_width="100dp"
                android:layout_height="wrap_content"
            android:onClick="dial" 
            android:background="@drawable/call"
             />

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

    </LinearLayout>

</LinearLayout>

 MainActivity.java

package com.example.call;


import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;

public class MainActivity extends Activity {

	 private EditText textResult;
	 private StringBuffer currentNum = new StringBuffer();
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		textResult=(EditText)findViewById(R.id.editText1);
		
	}
	public void digital_click(View view){//数字按钮点击后事件调用的方法
		ImageButton btn=(ImageButton)view;
		String text=btn.getTag().toString();
		currentNum.append(text);
		display();
	}
	public void dial(View view){//通话键调用的方法
		EditText text=(EditText)findViewById(R.id.editText1);
		String number=text.getText().toString();
		
		Intent intent=new Intent();//intent方法调用系统库拨号功能
		intent.setAction(intent.ACTION_CALL);
		intent.setData(Uri.parse("tel:"+number));//将数据以uri传入。
		startActivity(intent);
	}
	
	public void delete(View view){
		if(currentNum.length()>=1){
			currentNum.delete(currentNum.length()-1,currentNum.length());
		}
		if(currentNum.length()==0){
			Toast.makeText(MainActivity.this,"请输入号码", 100).show();
			display();
		}
		textResult.setText(currentNum);
	}
	
	 public double stringToDouble(){
	    	if(currentNum.length()==0){
	    		return 0;
	    	}
	    	double result=Double.parseDouble(currentNum.toString());
	    	return result;
	    }
	
	private void display() {
		// TODO Auto-generated method stub
		textResult.setText(currentNum.toString());
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}
}

 

猜你喜欢

转载自myziz.iteye.com/blog/2382388
今日推荐