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交互及系统服务调用的更多相关文章

  1. Activity间用Intent、Bundle、onActivityResult进行传值

    其实Activity间的传值就是通过Bundle,intent中也是自动生成了Bundle来传值,里面还有个onActivityResult()方法也可以传送数值. 如果一个Activity是由sta ...

  2. Android Activity切换与Activity间数据交互

    在Android程序内部, startActivity借助Intent来启动一个子Activity(使用父子关系进行表述,只为表达清晰,Android中并未有父子Activity的概念).如下: In ...

  3. Activity生命周期,Activity传值(Intent)

    生命周期: 从出生到死亡 Activity生命周期的7个方法和3个循环 onCreate() 创建时调用onRestart() 不可见到可见时调用onStart() 用户可见时调用onResume() ...

  4. Android零基础入门第83节:Activity间数据传递方法汇总

    在Activity间传递的数据一般比较简单,但是有时候实际开发中也会传一些比较复杂的数据,本节一起来学习更多Activity间数据的传递. 一.常用数据类型 在前面几节我们只学习了一些常用类型的数据传 ...

  5. Android Activity间跳转与传递数据

    1 概述 Activity之间的跳转主要使用 startActivity(Intent intent); startActivityForResult(Intent intent,int reques ...

  6. 利用Theme自定义Activity间的切换动画

    转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/22990643 大多Android系统默认Activity间的动画切换效果为,右边 ...

  7. Activity之间使用intent传递大量数据带来问题总结

    转载:大飞 http://blog.csdn.net/rflyee/article/details/47441405   Activity之间使用Parcel传递大量数据产生的问题. Activity ...

  8. Activity间的跳转,startActivity与startActivityForResult

    JreduCh04 2016-07-30跳转 (由一个画面跳转到另一个画面)两种方法:Intent中 startActivity.startActivityForResult.后者可设置request ...

  9. Activity与Service之间交互并播放歌曲的实现代码

    Activity与Service之间交互并播放歌曲,为了方便,我把要播放的歌曲定死了,大家可以灵活改进 MService: 复制代码代码如下: package com.tiantian.test;im ...

随机推荐

  1. Alpha冲刺(9/10)——2019.5.1

    作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目Alpha冲刺(团队) 团队目标 切实可行的计算机协会维修预约平台 开发工具 Eclipse 团队信息 队员学号 ...

  2. docker 学习操作记录 5-1

    记录5-1 [BEGIN] // :: Connecting to ... Connection established. To escape to local shell, press Ctrl+A ...

  3. TestNG入门——注解之Before/After

    注解是java 5新增的功能,可使用于类,方法,变量,testNG包提供的注解功能请见下表 1.@BeforeSuite or @AfterSuite  被注解的方法,将在整个测试套件之前 or 之后 ...

  4. 在spring管理的类的要注意问题

    特别时写框架的时候, 注意依赖引用,类的成员变量不要随便new,看spring容器中是否管理过,new出来的时其他的对象了

  5. 桥接(Bridge)模式

    桥接模式又称为柄体模式或接口模式.桥接模式的用意就是"将抽象化与实现化解耦,使得二者可以独立变化". 抽象化: 存在于多个实体中的共同的概念性联系,就是抽象化.作为一个过程,抽象化 ...

  6. 修改host文件加速访问github

    修改本地电脑系统 hosts 文件C:\Windows\System32\drivers\etc,直接在最后加入以下代码 192.30.253.112 github.com 192.30.253.11 ...

  7. ASP.NETCore 3.0 Autofac替换及控制器属性注入及全局容器使用

    1.Autofac基础使用 参考: https://www.cnblogs.com/li150dan/p/10071079.html 2.ASP.NETCore 3.0 Autofac 容器替换 需要 ...

  8. vmare-Tools重启后也不生效的问题

    这也是一个关于 Tools的问题,如题,既不能互相拷贝文件,也不能调节分辨率,好像是因为 Tools 的版本问题 需要进行的操作: 1:sudo apt-get install open-vm-too ...

  9. Idea中编辑后需要重启问题

    发布的artifact要用exploded 配置On Update action 和On frame deactivation为Update classes and resources. 编辑完成后, ...

  10. 英语koreite寿山石koreite单词

    koreite指寿山石 寿山石是中华瑰宝,中国传统“四大印章石“之一.分布在福州市北郊晋安区与连江县.罗源县交界处的“金三角”地带. 寿山石是福州特有的名贵石材,其石质晶莹.脂润.色彩斑斓,色泽浑然天 ...