何时使用隐含意图与显式意图?
对于这个隐含意图:
Intent searchintent = new Intent()
searchintent.setAction(Intent.ACTION_VIEW) searchintent.setData(Uri.parse( “http://www.google.com”)) startActivity(searchintent)
如何设置其他操作以及如何将setData与Uri参数以外的其他方式一起使用?
我只是试图理解这两种意图。
由于
答案 0 :(得分:5)
隐式意图是指您想要执行操作但不知道用户当前有哪些应用程序来处理该操作。 例如,发送电子邮件,有许多应用程序,因此用户可以选择他想要使用的应用程序。
显式意图用于启动应用程序中的活动(如果您具有main活动)和secondActivity,并且您希望启动您调用显式意图的第二个活动。
StartActivity(new Intent(getBaseContext(), secondActivity.class));
您可以通过向使用Intent传递的包添加额外内容来在活动之间传递数据。
Intent i = new Intent(getBaseContext, secondActivity.class);
i.putExtra("key",value);
startActivity(i);
要在第二个活动中取回附加内容,请致电:
getIntent().getStringExtra("key");
或者,如果您只想获得传递的“数据”uri,您可以致电
getIntent().getData();
额外可以是例如int / double / String或parcable对象
http://developer.android.com/reference/android/os/Parcelable.html
答案 1 :(得分:0)
如果您需要完成的操作可以由各种应用程序或不属于您的应用程序完成,则可以使用隐式intent。例如,条形码扫描,联系人拣选,短信/电子邮件等....
当您想要控制处理意图的活动时(例如,为什么将类定义传递给意图),应该使用显式意图用法。
答案 2 :(得分:0)
意图只是调用其他活动。 每个活动以下列方式处理此调用(作为您的调用):
1)在OnCreate()方法中,活动正在寻找有效的操作(如在您的调用“ACTION_VIEW”中)。如果此操作的操作有效且可以调用,则会调用此活动中的函数并“回答”您的请求。 (当使用“startActivityForResult”调用时)。
2)将数据设置为Intent:如果被调用的动作需要一些参数,则需要这样做。 这个参数可以是很多类型,因此它可以是String或Integer作为示例。您可以将这些类型的数据捆绑在“Bundle”中,并将其放入Intent中。 具有指定操作和数据的被调用活动处理所有这些以及可能的事情, 否则会抛出错误或者什么都没有。
在您的代码示例中,您调用打开浏览器的活动(因为android系统知道如何使用URL参数处理“ACTION_VIEW”)及其系统默认行为 由底层安卓系统定义。
如果您编写自己的活动,您可以将公共变量定义为“操作”,并且可以在OnCreate方法中处理它,即使使用了所需的参数。
答案 3 :(得分:0)
无论它包含什么,明确的意图总是传递给它的目标;不咨询过滤器。但只有当组件可以通过组件的一个过滤器
时,才会将隐式意图传递给组件