Android 为什么我的意图不一致?

Android 为什么我的意图不一致?,android,android-intent,Android,Android Intent,我试着跟随关于意图和意图过滤器的文章,希望将我的应用程序从显式意图移动到隐式意图(似乎使事情变得更简单)。然而,无论我如何努力,我的意图始终不匹配。相关信息如下: Intent in = new Intent(Intent.ACTION_VIEW, Provider.constantsUri); //in.addCategory(Intent.CATEGORY_DEFAULT); is this required? startActivity(in); 在我的清单中: <

我试着跟随关于意图和意图过滤器的文章,希望将我的应用程序从显式意图移动到隐式意图(似乎使事情变得更简单)。然而,无论我如何努力,我的
意图始终不匹配。相关信息如下:

Intent in = new Intent(Intent.ACTION_VIEW, Provider.constantsUri);
    //in.addCategory(Intent.CATEGORY_DEFAULT); is this required?
    startActivity(in);
在我的清单中:

<activity android:name="Equation"  >
            <intent-filter>
                <action android:name="android.intent.action.VIEW"></action>
                <data android:scheme="content" android:host="com.espian.formulae.pro" android:path="const"></data>
                <category android:name="android.intent.category.DEFAULT"></category>
            </intent-filter>
        </activity>

我也尝试过用
Uri.Builder
构建
Uri
,但也没有成功。有什么明显的东西我遗漏了吗?

我在我的一个应用程序中定义了这样一个意图:

    <activity android:name=".TwitterAuthActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="moodfling" android:host="twitterauth" />
        </intent-filter>
    </activity>

它启动到活动中。听起来你的过滤器定义有问题,但我不确定是什么问题。尝试复制我的版本,确保它适合您,然后在更改部件时尝试缩小它的范围。

似乎如果我的数据中只有一个方案和主机(如您的示例),它就可以工作,但如果我在其中放置了一个路径(这是必需的),它就不匹配了?问题是,异常表示没有任何内容与Uri解析的内容完全相同。要改用数据类型吗?您确定路径正确吗?我认为,如果从示例中记录constantsUri.getPath(),它实际上会显示“/const”。尝试更改您的意图过滤器,使其包含前导斜杠。您的评论中概述的内容有效(即需要前导斜杠),谢谢:)
    <activity android:name=".TwitterAuthActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="moodfling" android:host="twitterauth" />
        </intent-filter>
    </activity>
    Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse("moodfling://twitterauth"));
    startActivity(in);