无法理解意图过滤器

时间:2014-02-10 07:08:08

标签: android android-intent

我正在阅读意图&意图过滤器。我得到了以下代码:

活动:

 Intent i = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://www.example.com"));  
 startActivity(i);

在Manifest中:

<activity android:name="com.example.intentdemo.CustomActivity" 
        android:label="@string/app_name">            
  <intent-filter>               
   <action android:name="android.intent.action.VIEW" /> 
   <action android:name="com.example.intentdemo.LAUNCH" /> 
   <category android:name="android.intent.category.DEFAULT" />
   <data android:scheme="http" />            
  </intent-filter>         
</activity>

我的问题是 - 我不应该在意图内声明 android.Intent.ACTION_VIEW ,而不是 android.content.Intent.ACTION_VIEW 吗?

3 个答案:

答案 0 :(得分:1)

android.content.Intent.ACTION_VIEW指的是类ACTION_VIEW中常量android.content.Intent的名称。这个常量的值是“android.intent.action.VIEW”。因此存在差异。

答案 1 :(得分:0)

如果您看到Intent类的源代码,则ACTION_VIEWString常量,其值为"android.intent.action.VIEW" ...

public static final String ACTION_VIEW = "android.intent.action.VIEW";

所以两者都指的是同一个值"android.intent.action.VIEW" ...

答案 2 :(得分:0)

您在android.intent.action.VIEWandroid.Intent.ACTION_VIEW中感到困惑。它们都完全不同。

您使用的方式是 IMPLICIT INTENT

这些意图不命名目标,组件名称的字段留空。隐式意图通常用于激活其他应用程序中的组件。

Intent i = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://www.example.com"));  
 startActivity(i);

<强> ACTION

Intent object是一个字符串,用于命名要执行的操作 - 或者,就广播意图而言,是发生并正在报告的操作。该操作很大程度上决定了意图对象的其余部分的结构。 Intent类定义了许多与不同意图相对应的动作常量。查看Android Intent Standard Actions

列表

Intent对象中的操作可以通过setAction()方法设置,并由getAction()读取。

Check More for Intent and Intent-Filter