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. SuperMemo

    SuperMemo Your friend, Jackson is invited to a TV show called SuperMemo in which the participant is ...

  2. linux shell获取show slave status方法

    linux shell获取show slave status方法<pre>#!/bin/basharray=($(mysql -u数据库账号 -p数据库密码 -e "show s ...

  3. QFIL软件烧写镜像

    1.准备好需要烧写的文件 烧写之前,需要先准备好需要的文件,如下: 2.打开QFIL程序 接下来运行QFIL程序,如下: 3.选择端口 程序运行后,选择合适的端口,如下: 点击端口选择,然后选择Por ...

  4. 第九次作业 DFA最小化,语法分析初步

    1.将DFA最小化:教材P65 第9题 Ⅰ {1,2,3,4,5} {6,7} {1,2}b={1,2,3,4,5} 3,4}b={5} {6,7} Ⅱ {1,2}{3,4}{5} {6,7} 2.构 ...

  5. FLASK-SQLALCHEMY如何使用or和and条件进行组合查询

    FLASK-SQLALCHEMY如何使用or和and条件进行组合查询 http://www.cherishlau.site/2018/03/29/flask-sqlalchemy-use-or-and ...

  6. [转帖]k8s 基本使用(下)

    k8s 基本使用(下) https://www.jianshu.com/p/116ce601a60f 如果你没有看过上篇的话,推荐阅读完 k8s 基本使用(上)后再阅读本篇内容. kubectl cr ...

  7. Kafka session.timeout.ms heartbeat.interval.ms参数的区别以及对数据存储的一些思考

    Kafka session.timeout.ms heartbeat.interval.ms参数的区别以及对数据存储的一些思考 在计算机世界中经常需要与数据打交道,这也是我们戏称CURD工程师的原因之 ...

  8. Java学习:接口(interface)的使用于注意事项

    接口 接口就是一种公共的规范标准.只要符合规范标准,就可以大家通用. 接口就是多个类的公共规范.接口是一种引用数据类型,最重要的内容就是其中的:抽象方法. 如何定义一个接口的格式 如何定义一个接口的格 ...

  9. Openfire Meetings插件是一个包含各种Jitsi项目(如VideoBridge和Meet)的实现

    Openfire Meetings插件是一个包含各种Jitsi项目(如VideoBridge和Meet)的实现.要创建与Openfire Meetings一起使用的本机客户端,建议使用Jitsi项目提 ...

  10. 微信小程序调用云函数出错 Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail cloud function service error code -501005, error message Environment not found;

    错误异常: Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail cloud ...