Android и Phonegap: намерение запустить другое приложение

1

Я нашел этот код для запуска браузера с намерением:

Intent intent = new Intent (Intent.ACTION_VIEW, uri);
intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
intent.setDataAndType(uri, "text/html");
startActivity(intent);

Оно работает.

Но я не использую Android SDK. Я использую Phonegap для моего приложения. Поэтому я ищу способ начать это намерение. Я нашел этот плагин: https://github.com/borismus/phonegap-plugins/tree/master/Android/WebIntent/

Но это не позволяет "setClassName", "setDataAndType"....

Есть идеи?

  • 0
    Плагин, на который вы ссылаетесь, предназначен для неявных намерений. Вам нужно создать плагин для явных намерений. См. Эти ответы для справки: stackoverflow.com/questions/10043272/…
Теги:
cordova
android-intent
phonegap-plugins

2 ответа

1
Лучший ответ

Если вы просто хотите загрузить URL-адрес в браузере Android, вы должны просто использовать плагин ChildBrowser:

https://github.com/phonegap/phonegap-plugins/tree/master/Android/ChildBrowser

Если вы хотите начать какое-либо намерение, просто сообщите мне, как код Android PhoneGap запускает всевозможные намерения, чтобы получить работу.

  • 0
    Я уже думал о ChildBrowser. Но проблема в том, что он запускает HTMLViewer, как если бы я не использовал метод setClassName. Я хочу использовать браузер Android, потому что HTMLViewer не делает все ...
  • 0
    Используйте метод openExternal. Запускает браузер.
Показать ещё 3 комментария
2

Если вы проверите CordovaWebViewClient, есть несколько ури, которые Кордова из коробки.

Если вы не хотите играть с плагинами, вы можете переопределить его и добавить поддержку для разных пользовательских типов uris, которые, в свою очередь, обедали приложением по вашему выбору с параметрами, указанными в uri.

public class CustomWebViewClient extends
        org.apache.cordova.CordovaWebViewClient {

    public CustomWebViewClient(DroidGap ctx) {
        super(ctx);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {

        //Check if provided uri is interesting for us
        if (url.startsWith("customUri://")) {
            //Get uri params, create intent and start the activity
            return true;
        }

        return super.shouldOverrideUrlLoading(view, url);
    }
}

Выше класс должен использоваться в основном действии (которое расширяет DroidGap) вашего проекта Android:

@Override
public void init() {
    WebView webView = new WebView(this);
    CustomWebViewClient webClient = new CustomWebViewClient(this);
    CordovaChromeClient chromeClient = new CordovaChromeClient(this);
    super.init(webView, webClient, chromeClient);
}

Плагин, который вы упомянули, позволяет обедать намерение, основанное на указанном uri. Например, если вы предоставляете uri, начиная с http://, андроид распознает его как веб-ресурс и попытается запустить доступный браузер. Поэтому, если вы просто хотите запустить браузер, этого вам будет достаточно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню