android 預設瀏覽器手機 - 從android瀏覽器啟動自定義的android應用程序




7 Answers

使用<intent-filter><data>元素。 例如,要處理到twitter.com的所有鏈接,您需要將它放在您的AndroidManifest.xml <activity>中:

<intent-filter>
    <data android:scheme="http" android:host="twitter.com"/>
    <action android:name="android.intent.action.VIEW" />
</intent-filter>

然後,當用戶點擊瀏覽器中的twitter鏈接時,系統會詢問他們要完成操作的應用程序:瀏覽器或應用程序。

當然,如果你想提供你的網站和你的應用程序之間的緊密集成,你可以定義你自己的方案:

<intent-filter>
    <data android:scheme="my.special.scheme" />
    <action android:name="android.intent.action.VIEW" />
</intent-filter>

然後,在您的網絡應用程序中,您可以放置​​如下鏈接:

<a href="my.special.scheme://other/parameters/here">

當用戶點擊它時,你的應用程序將自動啟動(因為它可能是唯一可以處理my.special.scheme://類型的uris)。 唯一的缺點是,如果用戶沒有安裝應用程序,他們會得到一個令人討厭的錯誤。 我不確定有什麼方法可以檢查。

編輯:要回答你的問題,你可以使用getIntent().getData() ,它返回一個Uri對象。 然後可以使用Uri.*方法來提取所需的數據。 例如,假設用戶點擊了http://twitter.com/status/1234的鏈接:

Uri data = getIntent().getData();
String scheme = data.getScheme(); // "http"
String host = data.getHost(); // "twitter.com"
List<String> params = data.getPathSegments();
String first = params.get(0); // "status"
String second = params.get(1); // "1234"

你可以在Activity任何地方做上述事情,但你可能會想在onCreate()做到這一點。 您也可以使用params.size()來獲取Uri的路徑段數。 查看javadoc或android開發人員網站,了解可用於提取特定部分的其他Uri方法。

設定chrome為預設瀏覽器 取消chrome預設瀏覽器

任何人都可以請指導我如何從Android瀏覽器啟動我的Android應用程序?




截至2014年1月28日,以上所有答案都不適用於我的CHROME

我的應用程序可以從http://example.com/someresource/從環聊,Gmail等應用程序中正確啟動,但不能從Chrome瀏覽器中啟動。

要解決這個問題,以便它從CHROME正確啟動,您必須像這樣設置intent過濾器

        <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:host="example.com"
                android:pathPrefix="/someresource/"
                android:scheme="http" />
            <data
                android:host="www.example.com"
                android:pathPrefix="/someresource/"
                android:scheme="http" />
        </intent-filter>

注意pathPrefix元素

無論何時用戶通過點擊從谷歌搜索結果或任何其他網站的鏈接請求http://example.com/someresource/來自Chrome瀏覽器的模式,您的應用現在都會出現在活動選擇器中




還應該將<category android:name="android.intent.category.BROWSABLE"/>添加到intent過濾器,以使活動能夠從鏈接中正確識別。







請注意,如果您的圖標在實現此功能時從android啟動程序中消失,那麼您必須拆分intent-filter。

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <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="your-own-uri" />
        </intent-filter>
    </activity>



嘿,我得到了解決方案。 我沒有將該類別設置為“默認”。 此外,我正在將主要活動用於意圖數據。 現在我正在為意向數據使用不同的活動。 謝謝您的幫助。 :)




使用example.php:

<?php
if(!isset($_GET['app_link'])){  ?>   
    <iframe src="example.php?app_link=YourApp://blabla" style="display:none;" scrolling="no" frameborder="0"></iframe>
    <iframe src="example.php?full_link=http://play.google.com/xyz" style="display:none;" scrolling="no" frameborder="0"></iframe>
    <?php 
}
else { ?>
    <script type="text/javascript">
    self.window.location        = '<?php echo $_GET['app_link'];?>';
    window.parent.location.href = '<?php echo $_GET['full_link'];?>';
    </script>
<?php 
}



Related

android android-intent intentfilter