一.安卓中,TelephonyManager是电话管理器,它管理着电话的所有服务。
1.如图,为一个简单的打电话应用,他是通过调用系统API实现的,必须添加权限
2.先看清单文件,此处添加权限
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="market.phone"> 4 5 <uses-permission android:name="android.permission.CALL_PHONE"/>//添加权限 6 7 <application 8 android:allowBackup="true" 9 android:icon="@mipmap/ic_launcher" 10 android:label="@string/app_name" 11 android:supportsRtl="true" 12 android:theme="@style/AppTheme"> 13 <activity android:name=".MainActivity"> 14 <intent-filter> 15 <action android:name="android.intent.action.MAIN" /> 16 17 <category android:name="android.intent.category.LAUNCHER" /> 18 </intent-filter> 19 </activity> 20 </application> 21 22 </manifest>
3.再看布局文件,一个TextView,一个EditText,和一个Button
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" 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="market.phone.MainActivity"> <TextView android:id= "@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="请输入电话号码:" android:layout_alignParentTop="true" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="phone" android:layout_marginTop="24dp" android:id="@+id/editText" android:singleLine="true" android:layout_below="@+id/tv" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <Button android:text="点击拨打" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button" android:layout_below="@+id/editText" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> </RelativeLayout>
4.现在看实际代码
package market.phone; import android.content.Intent; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.Editable; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找到对应控件 final EditText et = (EditText) findViewById(R.id.editText); Button bt = (Button) findViewById(R.id.button); //设置监听器,采用匿名内部类方式 bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //获取输入电话号码字符串 String number = et.getText().toString().trim(); Log.e("dail","click"); Log.e("dail",number); //打电话 dailPhone(number); } }); //添加权限 } //打电话方法 public void dailPhone(String number){ //创建一个意图 Intent i = new Intent(); //设置意图的动作,要干什么.打电话 i.setAction(Intent.ACTION_CALL); //传入数据 i.setData(Uri.parse("tel:"+number)); startActivity(i); } }
5.运行结果,可见从上一个界面跳转到这个打电话的activity
需要程序源码的可以加我微信x241602私聊。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?