我发现此代码以意图启动浏览器:
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 :(得分:2)
如果你检查CordovaWebViewClient,有几个uris由开箱即用的Cordova处理。
如果您不想使用插件,您可以覆盖它并添加对不同的自定义类型的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);
}
}
上面的类应该用在你的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资源,并将尝试启动可用的浏览器。所以,如果您只是想启动浏览器,它就足够了。
答案 1 :(得分:1)
如果您只是想在Android浏览器中加载网址,那么您应该只使用ChildBrowser插件:
https://github.com/phonegap/phonegap-plugins/tree/master/Android/ChildBrowser
如果您正在寻求启动任何意图,请告诉我,因为Android PhoneGap代码会启动各种意图以完成工作。