Android-电话拨号器
首先,拿到项目需求的时候要分析界面布局
Ui 界面布局如下:
画图画的别嫌弃 - -。
布局文件使用相对布局 较简单
<RelativeLayout 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: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="wrap_content" android:inputType="phone" > <requestFocus /> </EditText> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="31dp" android:onClick="adiButtonClicked" android:text="拨打电话" /> <!-- 实际项目中不建议这样写。 [I18N] Hardcoded string "拨打电话", should use @string resource 应该保存到vlues 下 因为国际化 --> </RelativeLayout>
接下来 activity 中获取 editext 和 button 视图
Button 设置点击事件点击事件中获取editext 的电话号码,使用intent 启动拨号程序
// 拨打电话 流程
private void cellphone() {
String phonenumber = editText.getText().toString().trim();
if (!TextUtils.isEmpty(phonenumber)) {
// 意图信息传递
Intent intent = new Intent();
// 打电话
intent.setAction(intent.ACTION_CALL);
// 统一资源标识符(Uniform Resource Identifier)
intent.setData(Uri.parse("tel:" + phonenumber));
startActivity(intent);
} else {
Toast.makeText(MainActivity.this, "请输入正确电话号码", Toast.LENGTH_SHORT)
.show();
}
}
最后别忘了清单文件 AndroidManifest.xml 需要赋予权限
<uses-permission android:name="android.permission.CALL_PHONE"/>
接下来是 项目的详细代码,代码中有四种点击事件的详解
package com.liwei.cellphone;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
private EditText editText;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 加载布局文件
setContentView(R.layout.activity_main);
// 获取button 按钮
button = (Button) findViewById(R.id.button1);
// 获取editext 文本
editText = (EditText) findViewById(R.id.editText1);
// 设置 button onclick事件
button.setOnClickListener(this);
/**
* 1.创建一个内部类 定义点击事件
*
* button.setOnClickListener(new Mylistener());
*
* 2.采用匿名内部类创建点击事件
*
* button.setOnClickListener(new OnClickListener() {
*
* @Override public void onClick(View v) { cellphone(); } });
*
* 3. activity 实现点击事件的接口 一般项目中使用
*
* 4.xml文件中直接button 绑定 点击方法
*
*
*/
// 创建一个 点击事件方法
OnClickListener clickListener = new OnClickListener() {
@Override
public void onClick(View v) {
cellphone();
}
};
}
// 实现 点击事件接口
private class Mylistener implements OnClickListener {
@Override
public void onClick(View v) {
cellphone();
}
}
// 拨打电话 流程
private void cellphone() {
String phonenumber = editText.getText().toString().trim();
if (!TextUtils.isEmpty(phonenumber)) {
// 意图信息传递
Intent intent = new Intent();
// 打电话
intent.setAction(intent.ACTION_CALL);
// 统一资源标识符(Uniform Resource Identifier)
intent.setData(Uri.parse("tel:" + phonenumber));
startActivity(intent);
} else {
Toast.makeText(MainActivity.this, "请输入正确电话号码", Toast.LENGTH_SHORT)
.show();
}
}
/**
* 第三种写法 一般项目中使用的第三种方法
*/
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
cellphone();
break;
default:
break;
}
}
/**
* 第四种方法在布局文件中绑定一个点击方法
*/
public void adiButtonClicked(View view) {
cellphone();
}
}
第一种方法:
.创建一个内部类定义点击事件
第二种方法:
采用匿名内部类创建点击事件
第三种方法:
activity 实现点击事件的接口一般项目中使用
第四种方法:
需要在xml 中绑定