2011-05-24 60 views
4

我在android中获取java.net.MalformedURLException: Protocol not found:错误。 我该如何解决这个问题,我很长时间没有得到解决方案。 plz帮助我我怎么能解决这个错误“java.net.MalformedURLException:协议未找到:”在Android中

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) 

这是我m到处错误代码......

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; 
+1

请从'com.bestdambikers.Updates $ EfficientAdapter $ 4.onClick'方法添加代码(这就是该方法位于URL.java文件中并包含第157行)。 – inazaruk 2011-05-24 07:10:04

+0

请参阅我编辑的代码 – user767247 2011-05-24 07:19:34

+1

您的错误来自updatesBean.thumb的值。你应该检查这个值,看看它有什么问题 – DallaRosa 2011-05-24 07:31:54

回答

0

updatesBean.thumb是无效的网址。特别是 - 它没有有效的协议。这就是消息的内容。 这不是在你的代码中这个updatesBean.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); 
} 
1

它不是提高例外,它的抱怨,你有没有处理的可能性,它可能,即使它不会,因为在这种情况下,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); 
    } 
} 
相关问题