Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android隐式和显式意图_Java_Android - Fatal编程技术网

Java Android隐式和显式意图

Java Android隐式和显式意图,java,android,Java,Android,何时使用隐式意图与显式意图 对于这一隐含意图: 意向搜索意向=新意向() searchintent.setAction(Intent.ACTION\u视图) searchintent.setData(Uri.parse(“http://www.google.com")) startActivity(searchintent) 我将如何设置另一个操作,以及如何将setData与Uri参数以外的其他对象一起使用 我只是想大致理解这两种意图 谢谢如果您需要完成的操作可以由多种应用程序完成,或者不是您的

何时使用隐式意图与显式意图

对于这一隐含意图:

意向搜索意向=新意向()
searchintent.setAction(Intent.ACTION\u视图) searchintent.setData(Uri.parse(“http://www.google.com")) startActivity(searchintent)

我将如何设置另一个操作,以及如何将setData与Uri参数以外的其他对象一起使用

我只是想大致理解这两种意图


谢谢

如果您需要完成的操作可以由多种应用程序完成,或者不是您的应用程序完成,您可以使用隐式意图。例如,条形码扫描、联系人挑选、短信/电子邮件等


当您想要控制处理意图的活动时(即,为什么要将类定义传递给意图),应该使用显式意图用法。

隐式意图是指您想要执行某个操作,但不知道用户当前必须处理该操作的应用程序。 例如,发送电子邮件时,有许多应用程序,因此用户可以选择要使用的应用程序

如果您有mainactivity和secondActivity,并且希望启动称为显式意图的第二个活动,则显式意图用于启动应用程序中的活动

StartActivity(new Intent(getBaseContext(), secondActivity.class));
您可以在活动之间传递数据,方法是向正在传递的包中添加额外的内容

Intent i = new Intent(getBaseContext, secondActivity.class);
i.putExtra("key",value);
startActivity(i);
要想在第二次活动中获得额外服务,只需拨打电话:

getIntent().getStringExtra("key");
或者,如果您只想获取传递的“数据”uri,则可以调用

getIntent().getData();
额外的可以是例如int/double/String或可分配对象


意图只是对其他活动的调用。 每个活动都以以下方式处理此调用(与您的一样):

1) 在OnCreate()方法中,活动正在寻找有效的操作(如在调用“action\u视图”中)。如果该操作有效且可由该活动调用,则会调用该活动中的函数并“回答”您的请求。(使用“startActivityForResult”调用时)

2) 将数据设置为意图:如果调用的操作需要一些参数,则需要这样做。 这个参数可以是很多类型,例如,它可以是字符串或整数。您可以将这类数据捆绑在一个“捆绑包”中,并将其放入您的意图中。 如果可能的话,具有指定操作和数据的被调用活动将处理所有这些操作和数据, 否则它会抛出一个错误

在代码示例中,调用打开浏览器的活动(因为android系统知道如何使用URL参数处理“ACTION_VIEW”,这是系统默认行为) 由底层android系统定义

如果您编写自己的活动,您可以将公共变量定义为“action”,并可以在OnCreate方法中处理它,甚至可以使用所需的参数

  • 显式意图用于调用特定组件。当您知道要启动哪个组件并且不想让用户自由控制要使用哪个组件时。例如,您的应用程序有两个活动。活动a和活动B。您想从活动a启动活动B。在这种情况下,您定义了一个explicit intent targeting activityB,然后使用它直接调用它
  • 当您知道要做什么,但不知道应该启动哪个组件时,会使用隐式意图。或者,如果您想让用户在要使用的组件列表中进行选择,则会使用隐式意图。如果将这些意图发送到Android系统,则会搜索为特定操作注册的所有组件,并且数据类型。如果只找到一个组件,Android将直接启动该组件。例如,您有一个使用相机拍照的应用程序。您的应用程序的一个功能是,您可以让用户发送他拍摄的照片。您不知道用户有什么样的应用程序可以发送照片,并且如果用户有多个外部应用程序,您还希望为用户提供一个选项来选择使用哪个外部应用程序。在这种情况下,您不会使用显式意图。相反,您应该使用隐式意图,该意图的操作设置为action_SEND,数据额外设置为照片的URI
  • 显式意图始终传递到其目标,无论它包含什么;过滤器不会被查询。但隐式意图仅当它可以通过组件的过滤器之一时才会传递到组件