热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AndroidStudio怎么获取一个activity上面的电话数据并进行拨号

有关androidStudio获取页面电话号码,并进行拨号的操作步骤(一)、创建好获取数据的页面既然是需要到另一个activity上面

有关androidStudio获取页面电话号码,并进行拨号的操作步骤


(一)、创建好获取数据的页面

既然是需要到另一个activity上面获取有关数据(这里指电话号码),那么我们首先一步就是新建一个activity,把相应的数据布置到上面,对于activity的新建,大家可以参考博客https://blog.csdn.net/qq_42451251/article/details/104000755
这里学长就不给出步骤了,但页面的数据内容应该包括需要获取的电话号码,觉得单一的可以试着添加其他空间填补冗余。这里给出学长自己的界面设计效果图,大家自己设计哈(主要是电话号码哦!):
在这里插入图片描述

(二)、为拨号做初始配置文件的相关配置

上面页面创建完成,我们需要做的就是为拨号做准备,安卓手机拨号是需要手机拨号权限的,如下:
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"//权限请求插入到这里&#xff0c;用英文逗号隔开哦&#xff01;};

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;


推荐阅读
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
author-avatar
常德锦江-余欢
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有