Android, как создать настраиваемую схему URL с заданным форматом myapp://http://

Я исследовал большую часть настраиваемой схемы URL Q & A, и я не нашел свой возможный ответ.

Я хочу, чтобы мое приложение запускалось, щелкнув определенный URL-адрес в браузере (любой на мобильном устройстве), дело в том, что мой данный URL-адрес не может быть изменен, так как он служит для приложения IOS, и он выглядит так:/p >

"myapp://http://www.name.com/path/path2/"

Я не уверен, как обрабатывать "myapp://http://" и создавать фильтр правильного намерения, и все, что я пробовал, не работает. Любая помощь будет оценена, и если я пропустил соответствующий ответ, пожалуйста, кроме моих извинений.

Это то, что я пробовал до сих пор:

      <activity
        android:name="com.myapp.test.SplashScreen"
        android:exported="true"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <!-- Test for URL scheme -->
        <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="www.name.com"
                android:path="/path/path2/"
                android:scheme="http" />
            <data
                android:host="www.name.com"
                android:path="/path/path2/"
                android:scheme="https" />

            <data android:scheme="myapp" />
        </intent-filter>
        <!-- End Test for URL scheme -->
    </activity>

Примечание: Я попытался с/без экспортированного: true

Ответы

Ответ 1

Как CommonsWare сказал, что данный URI, когда мне нужно было создать схему, не является допустимым URI, поэтому схема не работала, и приложение не запускалось. После этого объяснения ребята на стороне сервера были убеждены изменить URI на myapp://... и он работал как magic:).

Теперь действие выглядит следующим образом:

 <activity
    android:name="com.myapp.test.SplashScreen"
    android:exported="true"
    android:label="@string/app_name"
    android:screenOrientation="portrait"
    android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

    <!-- Test for URL scheme -->
    <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="myapp" />
    </intent-filter>
    <!-- End Test for URL scheme -->
</activity>

Ответ 2

Это неправильное использование схемы URI и недействительно. HTTP-URL, который вы хотите передать, является частью данных и поэтому должен быть отправлен в строку запроса.

myapp://somehost/action?url=http%3A%2F%2Fwww.name.com%2Fpath%2Fpath2%2F

Ответ 3

вам нужно использовать гиперссылку для запуска приложения. например, вы задали схему = "yourpackagename", вам нужно установить такую ​​гиперссылку: yourpackagename://host, и вы должны отобразить гиперссылку на вашем браузере moble. Если у вас нет хост-библиотеки, просто удалите ее.

<!-- Test for URL scheme -->
<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="host" android:scheme="yourpackagename" />
</intent-filter>
<!-- End Test for URL scheme -->

Если ваша активность имеет более одной схемы, вы должны использовать 2 или более, чтобы указать ее