2011-03-04 47 views
5

我意識到有幾個類似的問題,但沒有一個被接受的答案爲我工作。作爲oauth過程的一部分,我希望瀏覽器重定向來啓動我的活動。正如我已經隨處可見,我設置了一個意向過濾器,理應做的是:爲什麼我的活動不是由URL啓動的?

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.codesta.test" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="7" /> 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".BrowsableActivity" 
        android:label="@string/app_name"> 
      <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="http" android:host="oauth.android.mydomain.com" /> 
      </intent-filter> 
     </activity> 

    </application> 
</manifest> 

然而,當我打開瀏覽器,輸入http://oauth.android.mydomain.com我得到了「找不到網頁」的錯誤頁面。我也嘗試過定義我自己的方案(我一般不推薦這樣做),但那也行不通。

我針對api 7級,並測試了運行2.1和2.2的仿真設備上的代碼,但未成功。任何幫助將不勝感激!

+0

這對我來說一直是一個痛苦,我從來沒有得到一個好的解決方案。 – 2011-03-04 20:24:34

回答

0

只要我使用真實域,http和https方案的intent-filter工作正常。但是,彈出式窗口詢問用戶是否要使用瀏覽器而不是應用程序,這是不可接受的。我嘗試使用自己的方案,但沒有奏效(不知道爲什麼)。

我的應用程序的目的,足以創建一個web視圖,而不是使用完全fleged瀏覽器的活動,我推翻了我的URI的WebViewClient和陷阱請求shouldOverrideUrlLoading並直接發送到我的活動。這個解決方案實際上比我之前嘗試做的更好,因爲用戶沒有得到提示,我不必定義全局方案。

0

我不確定,我可以稍後再測試,但我認爲當您在瀏覽器中輸入它時,您告訴瀏覽器打開它。

可能需要的是實際單擊加載該方案的鏈接://主機組合,不僅將其輸入到「url欄」中。

編輯:對不起,我做了一個快速測試,事實並非如此。不過,麻煩可能是瀏覽器在實際訪問意圖部分之前嘗試解析主機,並提供您使用您的應用程序打開它。它是否與真正的網址一起工作(假設我猜對了,這不是一個真正的解析網址?)

+0

如果我輸入http://mydomain.com,它會起作用 - 它會彈出一個對話框,詢問我是否想使用瀏覽器或使用應用程序來完成操作(這並不理想)。然而,當瀏覽器執行重定向到oauth.android.mydomain.com這是我真正需要的。 – Ben 2011-03-04 20:49:54

0

奔...

檢查與更換計劃,以HTTPS而非http。

2

我遇到了同樣的問題 - 就我而言,一些OAuth站點使用META .../>標記來執行您試圖捕獲的最終重定向。

使用META標記的重定向不會被Intent過濾器捕獲,因此您的代碼將永遠不會執行。奇怪的是,如果用戶點擊相同的鏈接,或者使用位置:標題重定向鏈接,它會觸發。已經有一個開放的android 2.2.1 bug票,但我已經失去了它的參考。

通常的解決方法是在回調URL上設置一個真實頁面,並使用Location:標題將其重定向到您可以捕獲的其他位置。

編輯:我試了一下這個與位置:頭,似乎是一般重定向到http://沒有捕獲,但重定向到一個不同的方案(x-oauth://)皺起了眉頭,但有效。

相關問題