问题描述
|
我在android中收到
java.net.MalformedURLException: Protocol not found:
的错误。
我如何解决这个问题,我想尝试很长时间却没有找到解决方案。请帮我
05-24 12:22:48.885: WARN/System.err(1358): java.net.MalformedURLException: Protocol not found:
05-24 12:22:48.905: WARN/System.err(1358): at java.net.URL.<init>(URL.java:273)
05-24 12:22:48.935: WARN/System.err(1358): at java.net.URL.<init>(URL.java:157)
05-24 12:22:48.935: WARN/System.err(1358): at com.bestdambikers.Updates$EfficientAdapter$4.onClick(Updates.java:354)
05-24 12:22:48.935: WARN/System.err(1358): at android.view.View.performClick(View.java:2485)
05-24 12:22:48.935: WARN/System.err(1358): at android.view.View$PerformClick.run(View.java:9080)
05-24 12:22:48.965: WARN/System.err(1358): at android.os.Handler.handleCallback(Handler.java:587)
05-24 12:22:48.965: WARN/System.err(1358): at android.os.Handler.dispatchMessage(Handler.java:92)
05-24 12:22:48.965: WARN/System.err(1358): at android.os.Looper.loop(Looper.java:123)
05-24 12:22:48.975: WARN/System.err(1358): at android.app.ActivityThread.main(ActivityThread.java:3647)
05-24 12:22:48.985: WARN/System.err(1358): at java.lang.reflect.Method.invokeNative(Native Method)
05-24 12:22:48.985: WARN/System.err(1358): at java.lang.reflect.Method.invoke(Method.java:507)
05-24 12:22:48.985: WARN/System.err(1358): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-24 12:22:48.995: WARN/System.err(1358): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-24 12:22:49.025: WARN/System.err(1358): at dalvik.system.NativeStart.main(Native Method)
这是我出错的代码...
strUrl = \"http://192.168.5.156/html/maykal/maykalvirtue/index.PHP?option=com_ijoomer&plg_name=jomsocial&pview=user&ptask=activities&sessionid=\"+ ConstantData.session_id + \"\";
parser = new XmlParser(strUrl,new UpdatesBean());
result = parser.ParseUrl(\"data\",\"update\");
UpdatesBean updatesBean = (UpdatesBean) result.get(position);
ConstantData.pos = position;
Log.e(\"POSITION OF CLICKED ROW\",\"\"+ConstantData.pos);
URL newurl = new URL(updatesBean.thumb); //getting error at this line
bi = BitmapFactory.decodeStream(newurl.openConnection().getInputStream());
ConstantData.updateImage = bi;
ConstantData.titleTag = updatesBean.titletag;
ConstantData.updateDate = updatesBean.date;
解决方法
它不是在引发异常,而是在抱怨您没有处理它可能发生的可能性,即使它不会,因为这种情况下的URL格式不正确。 (Java的设计师认为,“检查异常”这一概念是一个好主意,尽管在实践中效果不佳。)
若要将其关闭,请在方法声明中添加抛出MalformedURLException或其超类抛出IOException。例如:
public void myMethod() throws IOException {
URL url = new URL(\"https://wikipedia.org/\");
}
或者,将烦人的异常作为未检查的异常捕获并重新抛出
public void myMethod() {
try {
URL url = new URL(\"https://wikipedia.org/\");
...
} catch (IOException e) {
throw new RuntimeException(e);
}
}
,updatesBean.thumb无效的URL。特别是-它没有有效的协议。这就是要传达的信息。
它不是您的updateBean.thumb来源的代码。但是,根据名称,它可能是URI,而不是URL。打印并查看它是什么。
而且,由于它是大拇指,它可能是一个文件。
我可以建议您使用类似的方法来确定真实文件名吗?
public String getRealPathFromURI(Uri contentUri) {
if (contentUri.toString().startsWith(\"file://\")) {
return contentUri.toString();
}
String[] proj = { MediaStore.Images.Media.DATA };
Cursor cursor = managedQuery(contentUri,proj,// Which columns to
// return
null,// WHERE clause; which rows to return (all rows)
null,// WHERE clause selection arguments (none)
null); // Order-by clause (ascending by name)
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return \"file://\" + cursor.getString(column_index);
}