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