有关androidStudio获取页面电话号码,并进行拨号的操作步骤
(一)、创建好获取数据的页面
既然是需要到另一个activity上面获取有关数据(这里指电话号码),那么我们首先一步就是新建一个activity,把相应的数据布置到上面,对于activity的新建,大家可以参考博客
这里学长就不给出步骤了,但页面的数据内容应该包括需要获取的电话号码,觉得单一的可以试着添加其他空间填补冗余。这里给出学长自己的界面设计效果图,大家自己设计哈(主要是):
(二)、为拨号做初始配置文件的相关配置
上面页面创建完成,我们需要做的就是为拨号做准备,安卓手机拨号是需要手机拨号权限的,如下:
1、在项目的配置文件Androidmanifest.xml中添加拨号权限,位置在<application </application>
上边
<uses-permission android:name="android.permission.CALL_PHONE"/>
以下设置是主页面的相关设置,对照设置就好
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.CALL" />
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
对于安卓6.0以上的手机,上面添加的权限是需要我们在手机设置中自己去开启的,所以比较麻烦,就目前大多数应用来说,我们安装好,初次进入app,会弹出相关权限的请求,然后我们允许或者拒绝,这是目前我们app的主流,所以,这里我们也需要这么做,在上面添加权限的基础上,我们需要一个权限请求的函数,如下:
protected boolean shouldAskPremissions(){
return (Build.VERSION.SDK_INT>Build.VERSION_CODES.LOLLIPOP_MR1);
}
protected void askPermissions(){
String[]permissions={
"android.permission.CALL_PHONE"
};
int requestCode=200;
requestPermissions(permissions,requestCode);
}
后续的话,我们需要什么权限,直接加入到String[]permissions数组中就可以了,用英文逗号隔开:
String[]permissions={
"android.permission.CALL_PHONE"//权限请求插入到这里,用英文逗号隔开哦!
};
2、权限函数的调用:在主界面中,我们需要调用刚才的权限请求函数,在主界面的onCreate函数中调用,如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (shouldAskPremissions()){
askPermissions();
}
}
到这一步,我们权限的请求也就完成了,接下来,我们进入到页面数据的获取哦!
(三)、当前页面到另一个页面获取数据的传递方式
1、我们需要把数据页面的数据传递到我们的MainActivity中去,这里,android给我们提供了一种方法、如下:
Intent intent=new Intent();
String phoneNum=call1.getText().toString();
intent.putExtra("phoneNum",phoneNum);
setResult(0,intent);
利用如上的方法,我们可以将电话号码传递到拨号的页面
2、上面我们添加了数据页面的activity,这里我们就需要在数据页面进行操作,完成传值的过程,当前页面的java代码如下所示:
package com.cqjtu.anotherapp;//填写自己的项目包名
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class dataActivity extends AppCompatActivity implements View.OnClickListener {
private EditText edit1;
private TextView call1;
private TextView call2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_data);
call1=(TextView)findViewById(R.id.call1);
call2=(TextView)findViewById(R.id.call2);
call1.setOnClickListener(this);
call2.setOnClickListener(this);
}
public void onClick(View view){
Intent intent=new Intent();
if(view.getId()==R.id.call1){
String phoneNum=call1.getText().toString();
intent.putExtra("phoneNum",phoneNum);
setResult(0,intent);
finish();
}else if(view.getId()==R.id.call2){
String phoneNum1=call2.getText().toString();
intent.putExtra("phoneNum",phoneNum1);
setResult(0,intent);
finish();
}
}
}
以上就是页面数据传递的整个方法,下面我们需要接收该页面传递的数据,并进行拨号啦!
(四)、mainActivity的数据接收并利用获取到的电话号码进行拨号
1、同理,android也给我们提供了一种接收数据的方法、如下:
Bundle bundle=data.getExtras();
String phoneNum=bundle.getString("phoneNum");
以上就是接收的方法。
2、接下来就是接收到的电话号码进行拨号,我们通过对拨号键进行监听,当按下后,我们需要跳转到拨号界面,代码如下所示:
call1=(Button) findViewById(R.id.call);
call1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String phone=edit1.getText().toString().trim();
if (isEmpty(phone)) {
Toast.makeText(MainActivity.this,"号码不能为空",Toast.LENGTH_LONG).show();
return;
}
Intent intent=new Intent();
intent.setAction(intent.ACTION_CALL);
intent.addCategory(intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse("tel:"+phone));
startActivity(intent);
}
});
上面有一个判断号码不能为空的函数,判断为空值的函数如下:
private boolean isEmpty(String str) {
return str.length()==0||null==str;
}
通过以上的步骤,我们就可以实现获取电话数据并拨打电话了,下面是项目主函数的整体代码,如下所示:
package com.cqjtu.anotherapp;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.io.FileOutputStream;
public class MainActivity extends AppCompatActivity {
private final int CAMERA_REQUEST = 8888;
private TextView type;
private Button call1;
private EditText edit1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
type=(TextView)findViewById(R.id.type1);
call1=(Button) findViewById(R.id.call);
edit1=(EditText)findViewById(R.id.edit);
call1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String phone=edit1.getText().toString().trim();
if (isEmpty(phone)) {
Toast.makeText(MainActivity.this,"号码不能为空",Toast.LENGTH_LONG).show();
return;
}
Intent intent=new Intent();
intent.setAction(intent.ACTION_CALL);
intent.addCategory(intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse("tel:"+phone));
startActivity(intent);
}
});
if (shouldAskPremissions()){
askPermissions();
}
}
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data){
super.onActivityResult(requestCode,resultCode,data);
if (data==null)return;
Bundle bundle=data.getExtras();
if(requestCode==100){
String phoneNum=bundle.getString("phoneNum");
edit1.setText(phoneNum);
}
}
protected boolean shouldAskPremissions(){
return (Build.VERSION.SDK_INT>Build.VERSION_CODES.LOLLIPOP_MR1);
}
protected void askPermissions(){
String[]permissions={
"android.permission.CALL_PHONE"
};
int requestCode=200;
requestPermissions(permissions,requestCode);
}
private boolean isEmpty(String str) {
return str.length()==0||null==str;
}
}