Android Как создать пользовательскую схему URL с заданным форматом myapp: / / http://
Я исследовал большую часть пользовательской схемы URL Q&A, и я не нашел своего возможного ответа.
Я хочу, чтобы мое приложение было запущено, щелкнув определенный URL-адрес в браузере (любой на мобильном устройстве), дело в том, что мой данный URL-адрес не может быть изменен, поскольку он также обслуживает приложение IOS, и это выглядит так:
" 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
3 ответов
поскольку CommonsWare сказал, что данный URI мне нужен для создания схемы, не является допустимым URI, поэтому схема не работает, и приложение не запускается. После этого объяснения ребята на стороне сервера были убеждены изменить URI на myapp://... и это сработало, как по волшебству :).
действие выглядит так:
<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>
это неправильное использование схемы URI и недопустимо. URL HTTP, который вы хотите передать, является частью данных и, следовательно, должен быть отправлен в строке запроса.
myapp://somehost/action?url=http%3A%2F%2Fwww.name.com%2Fpath%2Fpath2%2F
вам нужно использовать гиперссылку для запуска приложения . например, вы устанавливаете scheme= "yourpackagename", вам нужно установить гиперссылку следующим образом: yourpackagename://host, и вы должны вист гиперссылку на вас moble browser .Если у вас нет host lable, просто удалите его.
<!-- 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 или более, чтобы указать его