2015-08-05 1 views
0

Здесь я прочитал несколько пользовательских записей URI и попытался создать рабочую схему URI. Однако он не работает. Код ниже XML:Пользовательский URI для Android

<activity android:name="testhing.ResetPasswordActivity" 
      android:label="@string/title_activity_reset_password" 
      android:parentActivityName="testthing.LoginActivity" > 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="restthing.LoginActivity" /> 
      <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="TESTTHING" android:host="ForgottenPassword" /> 
      </intent-filter> 
     </activity> 

Если я пытаюсь перейти к «TESTHING: // ForgottenPassword» в браузере, она работает поиск Google, но не открывается вид. У меня есть ссылка в электронном письме, которое называется «TESTHING: // ForgottenPassword? Token = 12345», но эта ссылка даже не отображается как интерактивная. Он действует так, как если бы пользовательская схема URI не регистрировалась. Что-то не так в моем синтаксисе?

ответ

1

Если я попытаюсь перейти в «ИСПРАВЛЕНИЕ: // ForgottenPassword» в браузере, он запускает поиск в Google, но не открывает его.

Существует много браузеров для Android. Некоторые могут попытаться использовать PackageManager, чтобы узнать, является ли эта случайная последовательность символов Uri для активности ACTION_VIEW, когда вы вводите ее в адресной строке. Нет необходимости, чтобы браузер делал это.

У меня есть ссылка в электронном письме, которое является «ИДЕНТИФИКАЦИЯ: // ForgottenPassword? Token = 12345», но эта ссылка даже не отображается как интерактивная.

Существует множество почтовых клиентов для Android. В идеале клиент электронной почты, видя ссылку, по крайней мере попытается выполнить операцию ACTION_VIEW с тем, на что ссылается ссылка. Еще раз, нет требования, чтобы клиент электронной почты делал это.

Есть ли что-то не так в моем синтаксисе?

Я бы порекомендовал идти со всеми строчными буквами для вашей схемы и хоста. Например, ваш почтовый клиент может применять регулярное выражение, которое предполагает схему нижнего регистра, так как это обычный способ написания схем URI.

В целом, пользовательские схемы имеют только одно искупающее значение для Android: они с меньшей вероятностью столкнутся с чем-либо еще и вызывают выбор. У вас гораздо больше шансов, что приложения узнают ваши ссылки, если вы используете http в качестве вашей схемы, идя с подходом «это приложение, обрабатывающее эти URL-адреса». Однако сейчас это вызовет выборщика, где пользователь может выбрать браузер или ваше приложение. Именно поэтому в Android M они добавляют способность предоставлять доказательства на сервере, что вы «владеете» URL-адресом, и что вы хотите, чтобы эти ссылки направлялись прямо в ваше приложение и обходили выборщика.

+0

В настоящее время я не могу изменить схему. Это часть некоторого устаревшего кода в API, который не может быть изменен прямо сейчас, так как это повлияет на версию приложения iOS. – steventnorris

+1

@steventnorris: Тогда вам придется согласиться на то, что он не будет работать в некоторых браузерах, почтовых клиентах и ​​других местах, где отображается ваш URL. – CommonsWare

+0

Он ни в одном из них не работает. Однако на iPhone он отлично работает. – steventnorris