我正在從事其他第三方希望通過意向在自己的應用中使用的活動。讓第三方應用程序直接啓動我的活動?
眼下這一活動是通過一個意圖過濾器捕獲的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