设为首页 加入收藏

TOP

一起学Android之Intent(一)
2019-09-01 23:26:06 】 浏览:65
Tags:一起 Android Intent

本文简述在Android开发中Intent的常见应用,仅供学习分享使用。

什么是Intent?

  Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。【官方文档:An intent is an abstract description of an operation to be performed(执行某操作的抽象描述)】

Intent的用途有哪些?

关联不同的组件:

  1. 用来激活启动其他应用程序的组件。
  2. 作为传递数据和事件的桥梁。

Intent调用模式

  1. 显式Intent:直接指定目标组件的ComponentNamae,适合启动同一个应用中的其他组件,比如在某应用程序内,一个Activity启动一个Service。
  2. 隐式Intent:不直接指定目标组件的ComponentName Class,适合启动设备中不同应用中的组件。

隐式Intent常见例子

打开地图:

1  //打开地图
2     public void open_map(View v) {
3         // Map point based on address
4         //Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");
5         // Or map point based on latitude/longitude
6          Uri location = Uri.parse("geo:34.9501439901632,114.95770290767824?z=14"); // z param is zoom level
7         Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);
8         startActivity(mapIntent);
9     }

打开网页:

1  //打开指定的网页
2     public void open_url(View v){
3         Uri webpage = Uri.parse("http://www.baidu.com");
4         Intent webIntent = new Intent(Intent.ACTION_VIEW, webpage);
5         startActivity(webIntent);
6     }

打电话

1 //打电话
2     public void open_tel(View v){
3         Uri number = Uri.parse("tel:10086");
4         Intent callIntent = new Intent(Intent.ACTION_DIAL, number);
5         startActivity(callIntent);
6     }

日历上设置日程

 1 //设置日历事件
 2     public void open_calendar(View v){
 3         Intent calendarIntent = new Intent(Intent.ACTION_INSERT, CalendarContract.Events.CONTENT_URI);
 4         Calendar beginTime =  Calendar.getInstance();
 5         beginTime.set(2012, 0, 19, 7, 30);
 6         Calendar endTime = Calendar.getInstance();
 7         endTime.set(2012, 0, 19, 10, 30);
 8         calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis());
 9         calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis());
10         calendarIntent.putExtra(CalendarContract.Events.TITLE, "Ninja class");
11         calendarIntent.putExtra(CalendarContract.Events.EVENT_LOCATION, "Secret dojo");
12         startActivity(calendarIntent);
13     }

 

判断Intent是否有接收App

 1 public void open_chkintent(View v){
 2         Intent calendarIntent = new Intent(Intent.ACTION_INSERT, CalendarContract.Events.CONTENT_URI);
 3         Calendar beginTime =  Calendar.getInstance();
 4         beginTime.set(2012, 0, 19, 7, 30);
 5         Calendar endTime = Calendar.getInstance();
 6         endTime.set(2012, 0, 19, 10, 30);
 7         calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis());
 8         calendarIntent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis());
 9         calendarIntent.putExtra(CalendarContract.Events.TITLE, "Ninja class");
10         calendarIntent.putExtra(CalendarContract.Events.EVENT_LOCATION, "Secret dojo");
11         PackageManager packageManager = getPackageManager();
12         List<ResolveInfo> activities = packageManager.queryIntentActivities(calendarIntent, 0);
13         boolean isIntentSafe = activities.size() > 0;
14         String msg=isIntentSafe?"有合适的接收":"没有合适的接收";
15         Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();
16     }

显式调用Intent

显式调用并传递参数

1 //打开一个Activity
2     public vo
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android 视频通信,低延时解决方案 下一篇Android Studio教程01-的工程和目..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目