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 или более, чтобы указать ее