0%

Intent实现拨号

实例:手机拨号

这个东西其实就是打开一个Activity然后在打开的过程中传输我们我的手机号,思路就是获取Edittext输入的值,然后在我们是用隐式intent的传输我们的手机号给指定的Activity就可以进行实现手机拨号的功能,具体的实现代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package com.example.lx;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class activity extends Activity{

private Button btn01;
private EditText edt01;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_01);
edt01 = (EditText)findViewById(R.id.editText1);
btn01 = (Button)findViewById(R.id.button1);
btn01.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
String phoneNumber = edt01.getText().toString();
Intent intent = new Intent();
intent.setAction("android.intent.action.CALL");
intent.addCategory("android.intent.category.DEFAULT");
intent.setData(Uri.parse("tel:"+phoneNumber));
startActivity(intent);

}
});
}
}

这里要注意手机的是拨号的Intent-filter:

1
2
3
intent.setAction("android.intent.action.CALL");
intent.addCategory("android.intent.category.DEFAULT");
intent.setData(Uri.parse("tel:"+phoneNumber));

tel协议后面要跟上我们的手机号。
但是这个时候并不能正常运行,因为我们没有这个权限,拨号算是手机的底层功能,所以需要特殊的一个权限,这个就是在安装的时候我们点击安装程序自动提示给我们是否允许这个功能(安装的时候都见到过),所以我们在AndroidManifest.xml中进行一个权限的请求:

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

这个就是请求拨号权限,这个之后我们的程序就能够正常的拨号了!