2010-06-14 2 views
5

Я читал о намерениях в android, но здесь идет мой вопрос. Я хотел бы запустить приложение на моем телефоне Android с щелчком ссылки в веб-браузере. Пример: Если ссылка «mycam: // http://camcorder.com», «mycam: //» действует как своего рода «тег» для запуска моего приложения, но я бы хотел передать «http://camcorder.com» в качестве строки для этого приложения. Начало.Запуск приложения с URL-адресом

Помогите пожалуйста!

Спасибо!

ответ

5

есть метод в браузере исходного коде приложения,:

public boolean shouldOverrideUrlLoading(WebView view, String url) { ... } 

После URL щелкнул, и он еще не начинает нагрузку:

  1. преобразует URL в намерение

    Intent intent; 
    
    // perform generic parsing of the URI to turn it into an Intent. 
    try { 
        intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME); 
    } catch (URISyntaxException ex) { 
        Log.w("Browser", "Bad URI " + url + ": " + ex.getMessage()); 
        return false; 
    } 
    
  2. если он не начинается с рынка: // (или некоторые предопределенные схемы), попробуйте startActivityIfNeeded()

    intent.addCategory(Intent.CATEGORY_BROWSABLE); 
    intent.setComponent(null); 
    try { 
        if (startActivityIfNeeded(intent, -1)) { 
         return true; 
        } 
    } catch (ActivityNotFoundException ex) { 
        // ignore the error. If no application can handle the URL, 
        // eg about:blank, assume the browser can handle it. 
    } 
    

Это очень полезная информация! Я снова играть ситуацию в простом коде:

Intent intent = Intent.parseUri("mycam://http://camcorder.com", Intent.URI_INTENT_SCHEME); 
intent.addCategory(Intent.CATEGORY_BROWSABLE); 
intent.setComponent(null); 
System.out.println(intent); 

Результат даст подсказки для меня, чтобы написать деятельность с целью фильтра:

 <activity android:name=".MyCamActivity" 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> 
       <action android:name="android.intent.action.VIEW" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
       <category android:name="android.intent.category.BROWSABLE" /> 
       <data android:scheme="mycam" /> 
      </intent-filter> 
     </activity> 

PS. не забудьте указать android.intent.category.DEFAUL.

Наконец, ваша активность может вызвать на mycam: // Схема

+0

Так что все, что мне нужно сделать, это создать мой фильтр намерений? BTW, вот реальная ссылка, с которой я буду проводить тесты: http://gunitec.com.do/carlos-portes.html «Cam1» - это фактическая ссылка, с которой я буду тестироваться. Я пробовал фильтр намерений и ничего не получил. –

+0

Я хорошо его тестирую. вы могли бы предоставить AndroidManifest.xml? – qrtt1

+0

Хорошо, как я могу отправить его вам? Извините за поздний ответ, меня не уведомили, что вы написали. –

4

mycam: // http://camcorder.com не является допустимым URI, и составление схем является своего рода страшно, если два приложения выбрать такой же. Было бы лучше, если бы вы зарегистрировали свою деятельность как обработчик для определенного URI (например, http : //www.example.com/camcorder, заменив свой собственный домен, конечно). Вы делаете это с помощью <data> tag in your <intent-filter> tag in the AndroidManifest.xml. Когда пользователь нажимает на ссылку, они будут отправлены в ваше приложение. Таким образом, вы можете также разместить в Интернете настоящую страницу, указав, что люди устанавливают ваше приложение или что-то еще.

+0

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

Смежные вопросы