Activity间通过Intent交互及系统服务调用
I. 实验目的
通过本实验理解Android开发框架中最核心程序部件Activity间通过Intent交互的原理,掌握通过Intent传递参数和系统服务调用的方法,并通过实验中的3个具体的实验内容加深理解。
II. 实验条件
1.已经安装了Android Studio的集成开发环境的计算机一部(台式、笔记本均可)
2.JAVA SDK1.8以上
3.Android SDK 7.0
4.虚拟仿真设备或真机(物理真机尚需一条USB线缆)
5.基本掌握集成开发环境的使用方法
6.熟练掌握Java面向对象程序设计语言
III. 实验内容
1.用户输入电话号码,调用手机的电话呼叫程序实现电话呼叫功能和直接呼叫功能;
2.用户输入电话号码和短息内容,调用安卓手机短息发送功能实现短息发送以及“旁路”手机短信发送功能实现直接短信发送;
3.用户输入一个Web URL,调用android手机的默认浏览器实现网页浏览功能
4.实验报告撰写
IV. 实验步骤及实验结果展示
(一)用户输入电话号码,调用手机的电话呼叫程序实现
1. 装箱单权限配置
1. <?xml version="1.0" encoding="utf-8"?>
2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3. package="com.qiniu.dailcall">
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:roundIcon="@mipmap/ic_launcher_round"
12. android:supportsRtl="true"
13. android:theme="@style/AppTheme">
14. <activity android:name=".MainActivity">
15. <intent-filter>
16. <action android:name="android.intent.action.MAIN" />
17.
18. <category android:name="android.intent.category.LAUNCHER" />
19. </intent-filter>
20. </activity>
21. </application>
22.
23. </manifest>
增加了调用电话的权限<uses-permission android:name="android.permission.CALL_PHONE"/>
2. 布局设置
1. <?xml version="1.0" encoding="utf-8"?>
2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3. android:layout_width="match_parent"
4. android:layout_height="match_parent"
5. android:orientation="vertical">
6.
7. <EditText
8. android:id="@+id/et_1"
9. android:layout_width="match_parent"
10. android:layout_height="wrap_content"
11. android:hint="请输入手机号"/>
12. <Button
13. android:id="@+id/btn_1"
14. android:layout_width="match_parent"
15. android:layout_height="wrap_content"
16. android:text="呼叫"
17. android:layout_marginTop="20dp"/>
18. </LinearLayout>
设置界面为线型布局。排列是竖直的android:orientation="vertical"。增加一个EditText 提供给用户输入手机号。增加一个按钮,点击可以拨号。
1. package com.qiniu.dailcall;
2.
3. import androidx.appcompat.app.AppCompatActivity;
4. import androidx.core.app.ActivityCompat;
5. import android.Manifest;
6. import android.content.Intent;
7. import android.content.pm.PackageManager;
8. import android.net.Uri;
9. import android.os.Build;
10. import android.os.Bundle;
11. import android.view.View;
12. import android.widget.Button;
13. import android.widget.EditText;
14. import android.widget.Toast;
此处实现两个接口,一个是点击按钮的监听类,一个是监听当光标离开输入电话号码输入框的类。
15. public class MainActivity extends AppCompatActivity implements View.OnClickListener, View.OnFocusChangeListener {
16. EditText met_1;
17. Button mBtn_1;
18.
19. @Override
20. protected void onCreate(Bundle savedInstanceState) {
21. super.onCreate(savedInstanceState);
22. setContentView(R.layout.activity_main);
23. ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE},1);
24. met_1=findViewById(R.id.et_1);
25. met_1.setOnFocusChangeListener(this);
26. mBtn_1=findViewById(R.id.btn_1);
27. mBtn_1.setOnClickListener(this);
28. }
29.
30. @Override
31. public void onClick(View v) {
32. String dailnum=met_1.getText().toString();
33. if(dailnum==null||dailnum.equals("")){
34. Toast.makeText(MainActivity.this,"请输入您的电话号码",Toast.LENGTH_SHORT).show();
35. }
通过intent传入打电话的参数,从而通过startActivity(intent)调用手机的打电话服务
36. Intent intent=new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+dailnum));
37. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
38. if(checkSelfPermission(Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED){
判断是否有打电话的权限,没有则申请此权限
39. ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE},1);
40. }
41. }else {
42. return;
43. }
44. startActivity(intent);
45. }
判断是否填写电话号码,没输入电话号码则提示用户的友好交互。
46. @Override
47. public void onFocusChange(View v, boolean hasFocus) {
48. if(met_1.getText().toString()=="请输入您的手机号"){
49. met_1.setText("");
50. }
51. }
52. }

Activity间通过Intent交互及系统服务调用的更多相关文章
- Activity间用Intent、Bundle、onActivityResult进行传值
其实Activity间的传值就是通过Bundle,intent中也是自动生成了Bundle来传值,里面还有个onActivityResult()方法也可以传送数值. 如果一个Activity是由sta ...
- Android Activity切换与Activity间数据交互
在Android程序内部, startActivity借助Intent来启动一个子Activity(使用父子关系进行表述,只为表达清晰,Android中并未有父子Activity的概念).如下: In ...
- Activity生命周期,Activity传值(Intent)
生命周期: 从出生到死亡 Activity生命周期的7个方法和3个循环 onCreate() 创建时调用onRestart() 不可见到可见时调用onStart() 用户可见时调用onResume() ...
- Android零基础入门第83节:Activity间数据传递方法汇总
在Activity间传递的数据一般比较简单,但是有时候实际开发中也会传一些比较复杂的数据,本节一起来学习更多Activity间数据的传递. 一.常用数据类型 在前面几节我们只学习了一些常用类型的数据传 ...
- Android Activity间跳转与传递数据
1 概述 Activity之间的跳转主要使用 startActivity(Intent intent); startActivityForResult(Intent intent,int reques ...
- 利用Theme自定义Activity间的切换动画
转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/22990643 大多Android系统默认Activity间的动画切换效果为,右边 ...
- Activity之间使用intent传递大量数据带来问题总结
转载:大飞 http://blog.csdn.net/rflyee/article/details/47441405 Activity之间使用Parcel传递大量数据产生的问题. Activity ...
- Activity间的跳转,startActivity与startActivityForResult
JreduCh04 2016-07-30跳转 (由一个画面跳转到另一个画面)两种方法:Intent中 startActivity.startActivityForResult.后者可设置request ...
- Activity与Service之间交互并播放歌曲的实现代码
Activity与Service之间交互并播放歌曲,为了方便,我把要播放的歌曲定死了,大家可以灵活改进 MService: 复制代码代码如下: package com.tiantian.test;im ...
随机推荐
- 小程序 - 底部导航栏“tabBar”
小程序底部导航 1.app.json页面配置: { "pages": [ "pages/movie/movie", "pages/cinema/cin ...
- vue.js与element-ui实现菜单树形结构
由于业务需要,要求实现树形菜单,且菜单数据由后台返回,在网上找了几篇文章,看下来总算有了解决办法.借鉴文章链接在最底部. 场景:根据业务要求,需要实现活动的树形菜单,菜单数据由后台返回,最后的效果图如 ...
- 钉钉与wcp知识库集成工具
dingding-wcp 钉钉(dingding)的wcp(知识库)集成通知,非常简单的小工具.(wcp版本 V.free.4.0.4) git: https://gitee.com/chejiang ...
- JMeter分布式执行环境的搭建 ( 使用基于SSL的RMI的有效密钥库 )
JMeter分布式执行环境的搭建 ( 使用基于SSL的RMI的有效密钥库 ) 在上一篇的基础之上,提供一个简单的例子: Master和Slave不是同一台,采用默认端口 Master:10.86.16 ...
- iphone如何安装mitmproxy的pem文件(当iphone无法使用邮箱时)
背景描述: 我要安装mitmproxy描述文件 mitmproxy-ca-cert.pem , 说是用iphone自带的邮箱接收然后安装即可,但悲剧的邮箱坏了[提示:无法连接服务器],查了不少方法都无 ...
- linux学习 - 基本命令篇
关机重启命令 基本操作之修改用户名(Ubuntu) 查看系统版本号 查看系统是32位还是64位 系统进程信息查看 查看某个端口被占用的情况 查看磁盘分区使用情况 df 命令 fdisk 关机重启命令 ...
- 类例程_java战斗程序
代码如下: package t11; import java.util.Random; public class Fight { String name; int life, attack, spee ...
- centos从零开始安装elasticSearch
前言:elasticSearch作为一款优秀的分布式搜索工具,被广泛用在数据搜集和整理的业务中,知名的比如有github就是采用es来精准的搜索几千万行代码,百度也大量应用es做数据爬取分析,本篇博客 ...
- 世界上最大的软件注册表-----npm
npm 是什么? npm 为你和你的团队打开了连接整个 JavaScript 天才世界的一扇大门.它是世界上最大的软件注册表,每星期大约有 30 亿次的下载量,包含超过 600000 个 包(pack ...
- adb shell get/setprop, setenforce...
adb shell getprop <key> 获取设备参数信息adb shell setprop <key> <value> 设置设备参数信息 例子1:>C ...