我正在从事其他第三方希望通过意向在自己的应用中使用的活动。让第三方应用程序直接启动我的活动?
眼下这一活动是通过一个意图过滤器捕获的URL,就像这样:
<activity android:name=".MyActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<category android:name="android.intent.category.BROWSABLE"></category>
<data android:host="www.mysite.com" android:pathPrefix="/test/" android:scheme="http"></data>
</intent-filter>
</activity>
上述作品,只要用户点击一个链接在我的应用程序,如:
“mysite.com/测试/ blah.html“
我的应用程序作为一个选择,随着浏览器,打开链接。
现在,如果第三方想利用我的应用程序,我认为他们可以用上面这样的:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://mysite.com/test/somedata"));
startActivity(intent);
虽然这会工作,这可能不会给他们直接跳跃的预期效果从我的活动 - 他们的android选择器对话框将出现,问他们是否要打开意向数据与浏览器,或我的应用程序。
我该如何让第三方直接打电话给我的活动,而不用像这样广播意图?我想让他们仍然传递相同的确切数据给我,但让他们直接打开我的活动。
谢谢
好吧,我不明白他们如何在他们的源代码中指定“YourClass” - 因为他们不需要在他们的项目中访问我的活动的java文件来引用它吗?谢谢 – user246114 2010-02-21 05:08:45
如果他们无法链接到您的库,则可以使用反射来获取类对象的句柄。 '类。forName(someFullyQualifiedClass)'为全限定类名返回一个类对象。他们需要了解你的课程,但编译器不需要。我用示例代码更新了我的答案。 – 2010-02-21 05:18:00
谢谢克里斯,那有效。如上所述让第三方打电话给我的活动是非标准的还是不好的主意?它仍然是很好的使用意图,我只想定义我的意图,以便它也不会被浏览器应用程序解雇?例如,仍然播出了一个意图,但是定义它的方式是没有其他应用程序可能也会被注册。谢谢 – user246114 2010-02-21 05:42:04