【问题标题】:Custom URL scheme Android自定义 URL 方案 Android
【发布时间】:2011-12-14 03:20:39
【问题描述】:

您好,自定义 url 方案不适合我。这是我的代码

                <application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".MainActivity" android:label="@string/app_name"
        android:launchMode="singleTask">

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.LAUNCHER" />
            <data android:scheme="http" android:host="jinilabs.test" />
        </intent-filter>
    </activity>

</application>

当我在模拟器浏览器上输入网址时 - http://jinilabs.test 它给了我网页不可用的错误。 这里有什么问题吗?请告诉我

【问题讨论】:

    标签: android url custom-action


    【解决方案1】:

    仅在栏中输入 URL 是行不通的。您的 url 必须是网页上的可点击链接,因为检查它是否是自定义 url 的浏览器方法仅在点击链接时触发;它只是运行在地址栏中输入的 url(并忽略自定义 url)。 单击this link 应该会像现在一样启动您的应用程序。如果它仍然不起作用,您可能需要在清单文件中添加其他代码。我的看起来像这样:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="appcall.thing"
      android:versionCode="1"
      android:versionName="1.0">
      <uses-sdk android:minSdkVersion="4" />
    
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".AppCallActivity"
                  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>
                <data android:scheme="stoneware.app.switcher" />
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>
            </intent-filter>
        </activity>
    </application>
    </manifest>
    

    当然,您必须将此处的一些名称替换为与您的应用相关的名称。我还建议您使用独特的而不是 http 来启动您的 url 方案,以防 http 混淆浏览器。我的 url 方案,例如,stoneware.app.switcher:// 希望这对你有用:)

    【讨论】:

    • 非常感谢您的帖子,我在寻找解决方案一小时后怀疑它为什么不能从浏览器 url 工作。
    【解决方案2】:

    将此代码添加到清单文件:

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    

    然后尝试。

    【讨论】: