2011-03-28 85 views
0

我试过以下关于Intents和Intent Filters的文章,希望将我的应用从显式转移到隐式意图(似乎让事情变得更简单)。然而,我的Intents从来没有匹配,无论我多努力尝试。相关信息如下:为什么我的意图不匹配?

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> 

和constantsUri的定义:

public static Uri constantsUri = Uri.parse("content://com.espian.formulae.pro/const"); 

我也试过用Uri.Builder形成Uri,但没有要么运气。有什么明显的我失踪了吗?

回答

0

我在我的应用程序之一是这样定义的意图:

<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); 

它启动的活动。听起来你的过滤器定义中有些东西是错误的,但我不知道什么是非正式的。尝试复制我的版本并确保它适用于您,然后尝试在更换零件时缩小版本。

+0

看来,如果我只有一个计划和主机在数据(如你的例子)它的工作原理,但如果我把一个路径(这是必需的),它不匹配?事情是,这个例外说没有什么与Uri解析的_exact相同的Uri_匹配。将尝试使用数据类型 – 2011-03-29 21:16:43

+0

您确定您的路径正确吗?我想如果你从你的例子中记录constantsUri.getPath(),它实际上会显示“/ const”。尝试更改您的意图过滤器以包含前导斜杠。 – mikerowehl 2011-03-29 21:34:10

+0

您评论中概述的内容有效(即它需要前导斜线)谢谢:) – 2011-05-23 01:19:26

相关问题