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. Java8 新特性 Lamdba表达式

    Lamdba 表达式为什么出现   Java8是自java延生以来最大的改变,他允许java中的方法和函数成为一等公民(可以在方法间传递),所以就应运而出现了Lamdba表达式,他可以将表达式传递给另 ...

  2. SQL系列(十二)—— insert update delete

    前言 这个系列的前面都一直在介绍查询select.但是SQL中十分广泛,按对数据的不同处理可以分为: DML:全称Data Manipulation Language,从名字上可以看出,DML是对数据 ...

  3. 菜刀连接一句话木马出现:`Cannot call assert() with string argument dynamically`错误

    前言 逆天还是上学那会玩渗透的,后来工作后就再也没碰了,所以用的工具还是以前经典款,这不,发现出问题了 问题 如果是PHP5则没有问题,如果是PHP7,会出现:Cannot call assert() ...

  4. 可落地的DDD的(2)-为什么说MVC工程架构已经过时

    摘要 mvc是一种软件设计模式,最早由Trygve Reenskaug在1978年提出,他有效的解决了表示层,控制器层,逻辑层的代码混合在一起的问题,很好的做到了职责分离.但是在实际的编码实践过程中, ...

  5. 示例:WPF实现ApplicationCommands.Delete的TextBox

    原文:示例:WPF实现ApplicationCommands.Delete的TextBox 目的:通过模仿TextBox中Ctrl+C等快捷键原理来了解CommandBindings实现原理,可以通过 ...

  6. 当Windows操作系统关机时,不会执行Windows Service的OnStop方法(转载)

    Windows Service OnStop when computer shutdown 问: I'm writing a Windows Service in C#. I want to take ...

  7. Orleans 3.0 为我们带来了什么(转载)

    以下为本篇文章的 作者: 艾心 出处: https://www.cnblogs.com/edison0621/ 原文:https://devblogs.microsoft.com/dotnet/orl ...

  8. vue/react/angular开发的css架构思考

    前端开发现在已经从传统的后端web多页面开发模式转向前端单页SPA开发模式,而vuejs/react/angular则是开发SPA非常优秀的前端框架.组件化开发由react最早提出,vuejs后发优势 ...

  9. Json提取器。

  10. .Net Core 程序集管理说明(加载)

    .NET CORE 的程序集加载管理和以前的 .NET 发生了很大的变化, 在 .NET CORE 里, 程序集的加载, 依赖了 xx.deps.json 文件, deps.json 文件里,定义了程 ...