android中的显式和隐式活动调用有什么不同?

Adh*_*ham 37 android android-activity android-implicit-intent explicit-intent

android中显式和隐式活动调用有什么区别?如果用简单的例子解释答案就会很好.

Mic*_*elP 60

例如:

隐式活动调用

在intent filter中,您可以为您的活动创建操作,因此其他应用可以通过此操作调用您的活动,如下所示:

<activity android:name=".BrowserActivitiy" android:label="@string/app_name">
   <intent-filter>
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <data android:scheme="http"/> 
   </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

调用隐式Intent的另一种方法如下:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.example.com"));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

显式活动电话

您拨打电话,准确指出哪个活动类:

Intent intent = new Intent(this, ActivityABC.class);
i.putExtra("Value", "This value for ActivityABC");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

希望这有助于您更多地了解android中的显式和隐式活动调用.

您可以在此处获取有关Android Intent的更多详细信息


Var*_*tia 29

  1. 显式意图用于调用特定组件.当您知道要启动哪个组件并且不希望让用户可以自由控制要使用的组件时.例如,您有一个具有2个活动的应用程序.活动A和活动B.您想要从活动A启动活动B.在这种情况下,您定义一个显式的意图目标activityB,然后使用它直接调用它.
  2. 当您知道自己想要做什么时会使用隐式意图,但是您不知道应该启动哪个组件.或者,如果您希望为用户提供在要使用的组件列表之间进行选择的选项.如果将这些Intent发送到Android系统,它将搜索为特定操作和数据类型注册的所有组件.如果只找到一个组件,Android将直接启动该组件.例如,您有一个使用相机拍照的应用程序.您的应用程序的一个功能是,您可以让用户发送他拍摄的照片.您不知道用户可以发送照片的应用程序类型,并且您还希望为用户提供选择如果他有多个外部应用程序的选项.在这种情况下,您不会使用明确的意图.相反,您应该使用隐式意图,其操作设置为ACTION_SEND,其数据额外设置为照片的URI.

无论它包含什么,明确的意图总是传递给它的目标; 不咨询过滤器.但只有当组件可以通过组件的一个过滤器时,才会将隐式意图传递给组件