Android的最重要功能之一就是APP能够根据“Action”跳转到另一个APP。例如,如果您希望在地图上显示出您APP中的商家地址,则您不必在APP中建立一个显示地图的Activity,但您可以使用Intent创建一个查看地址的请求。然后Android系统启动一个能够在地图上显示地址的APP。
您可以用显式Intent实现APP内各Activity之间的切换,显式Intent定义了要启动的目标组件的确切类名。但是,如果要调用另一个APP来执行某个操作,例如“查看地图”,则必须使用隐式Intent。
本课程将向您展示如何为特定Action创建隐式Intent,以及如何使用它来启动其他APP中执行此Action的Activity。
建立隐式Intent
隐式Intent不声明要启动的组件的类名,而是声明要执行的Action。该Action指定您要执行的操作,例如view,edit,send或get某些内容。Intent通常还包括与Action相关联的Data,例如要查看的地址或要发送的电子邮件。根据您要创建的Intent,Data可能是Uri或其他几种数据类型之一,或者Intent可能根本不需要Data。
如果您的数据是Uri,则可以使用Intent()构造函数来定义Action和Data。例如,以下展示如何使用Uri数据来指定电话号码,并用此Uri来创建拨号Intent。
Uri number = Uri.parse("tel:5551234");
Intent callIntent = new Intent(Intent.ACTION_DIAL, number);
当您的APP通过startActivity()来调用此Intent时,Phone APP会发起对给定电话号码的呼叫。
下面有一些其他Intent与其对应的Action和Uri数据:
•查看地图:
// Map point based on address
Uri location = Uri.parse("geo:0,0?q=1600+Amphitheatre+Parkway,+Mountain+View,+California");
// Or map point based on latitude/longitude
// Uri location = Uri.parse("geo:37.422219,-122.08364?z=14"); // z param is zoom level
Intent mapIntent = new Intent(Intent.ACTION_VIEW, location);
•查看网页:
Uri webpage = Uri.parse<