На BlackBerry и Android: вызов родного приложения из веб-браузера? - PullRequest
1 голос
/ 19 июня 2009

На iPhone приложение может связать новое имя протокола с самим собой, поэтому, если пользователь вводит «myapp: // xxx» в веб-браузере, он вызывает приложение.

Возможно ли это с BlackBerry или Android?

Ответы [ 3 ]

6 голосов
/ 19 июня 2009

Для Android взгляните на ответы на этот вопрос:

Ответ Android на URL в намерении

, а также следующая страница, особенно в разделе «Типы данных» об Android: схема на этой странице:

http://developer.android.com/guide/topics/intents/intents-filters.html

Для вашего приложения вы должны поместить что-то вроде следующего в ваш AndroidManifest.xml:

<intent-filter><action android:name="android.intent.action.VIEW"></action>
<category android:name="android.intent.category.DEFAULT"></category>
<category android:name="android.intent.category.BROWSABLE"></category>
<data android:scheme="myapp"></data>
</intent-filter>
1 голос
/ 19 июня 2009

Для BlackBerry - да, в некоторой степени, посмотрите на пакет net.rim.device.api.browser.plugin (JDE 4.0.0 и выше). Это позволяет вам указать интерфейс обратного вызова для данного типа MIME и других параметров.

По сути, вы подкласс BrowserContentProvider, чтобы указать типы (типы) MIME, которые вы хотите получить, и зарегистрируйтесь в BrowserContentProviderRegistery.

У меня нет большого опыта в этом - но похоже, что вы можете быть ограничены в предоставлении пользовательских функций рендеринга - это может быть хорошо для вас. Я не уверен, насколько ограниченной была бы ваша способность делать что-либо еще - вам придется попробовать что-то еще.

0 голосов
/ 19 июня 2009

Для устройств BlackBerry, работающих под управлением 4.0 или более поздней версии (все устройства с трекболом и более поздняя версия не ниже 4.2), вам необходим следующий код:

// Get the default sessionBrowserSession
net.rim.blackberry.api.browser.browserSession = Browser.getDefaultSession();
// now launch the URL
browserSession.displayPage("http://www.BlackBerry.com");

Поскольку это довольно многократно используемый сегмент кода, я рекомендую поместить в него следующую функцию:

public static void loadURL(String url)
{
    try{
        net.rim.blackberry.api.browser.BrowserSession bSession = net.rim.blackberry.api.browser.Browser.getDefaultSession();
        bSession.displayPage(url);
        bSession.showBrowser();
    }
    catch (Exception ex){
        System.out.println("Error loading url [" + url + "]: " + ex.getMessage());
    }
}
...