我正在使用PhoneGap 3.4和InAppBrowser插件。
当我尝试打开外部网址时,它正在启动浏览器,没有任何问题。
但是当我尝试启动market://
网址来评价我的应用时,我收到以下错误:
05-13 04:30:34.527: D/InAppBrowser(2894): InAppBrowser: Error loading url market://details?id=com.mydomain.myapp:android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=market://details?id=com.mydomain.myapp }
我可以看到InAppBrowser.java上有一个函数,如;
public String openExternal(String url) {
try {
Intent intent = null;
intent = new Intent(Intent.ACTION_VIEW);
// Omitting the MIME type for file: URLs causes "No Activity found to handle Intent".
// Adding the MIME type to http: URLs causes them to not be handled by the downloader.
Uri uri = Uri.parse(url);
if ("file".equals(uri.getScheme())) {
String mimeType = webView.getResourceApi().getMimeType(uri);
intent.setDataAndType(uri,mimeType);
} else {
intent.setData(uri);
}
this.cordova.getActivity().startActivity(intent);
return "";
} catch (android.content.ActivityNotFoundException e) {
Log.d(LOG_TAG, "InAppBrowser: Error loading url "+url+":"+ e.toString());
return e.toString();
}
}
这段代码看起来不错,但它始终属于catch语句。有没有解决方法呢?
更新:代码在真实设备上运行正常,不适用于模拟器, 这就是原因;
答案 0 :(得分:1)
对于那些没有正确阅读问题的人(比如我),因此没有点击最后的链接:
我遇到的问题是我正在尝试从没有Playstore的模拟器中打开market://
链接。
PS:在Cordova 5.1.1和inAppBrowser 0.6.0上测试
答案 1 :(得分:0)
请使用以下CLI添加inappbrowser插件 $ cordova插件添加org.apache.cordova.inappbrowser 并使用以下代码打开inappbrowser
<!DOCTYPE html>
<html>
<head>
<title>InAppBrowser.removeEventListener Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for Cordova to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// Global InAppBrowser reference
var iabRef = null;
function iabLoadStart(event) {
alert(event.type + ' - ' + event.url);
}
function iabLoadStop(event) {
alert(event.type + ' - ' + event.url);
}
function iabClose(event) {
alert(event.type);
iabRef.removeEventListener('loadstart', iabLoadStart);
iabRef.removeEventListener('loadstop', iabLoadStop);
iabRef.removeEventListener('exit', iabClose);
}
// Cordova is ready
//
function onDeviceReady() {
iabRef = window.open('http://apache.org', '_blank', 'location=yes');
iabRef.addEventListener('loadstart', iabLoadStart);
iabRef.addEventListener('loadstop', iabLoadStop);
iabRef.addEventListener('exit', iabClose);
}
</script>
</head>
<body>
</body>
</html>