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”....

有任何想法吗 ?

4

2 回答 2

2

如果您选中CordovaWebViewClient,则有几个 uris 由 Cordova 开箱即用地处理。

如果您不想使用插件,您可以覆盖它并添加对不同的自定义类型 uri 的支持,这反过来会使用 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);
    }
}

上面的类应该在你的 android 项目的主要活动(扩展 DroidGap)中使用:

@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 午餐意图。因此,例如,如果您提供以 http:// 开头的 uri,android 会将其识别为 Web 资源并尝试启动可用的浏览器。因此,如果您只想启动浏览器,这对您来说应该足够了。

于 2012-05-21T12:43:56.717 回答
1

如果您只想在 Android 浏览器中加载 url,那么您应该使用 ChildBrowser 插件:

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

如果您想启动任何意图,请告诉我,因为 Android PhoneGap 代码会启动各种意图以完成工作。

于 2012-05-21T13:31:31.373 回答