将Url转换为Uri

时间:2014-03-15 13:47:38

标签: android url android-widget uri

我正在研究Widget。 我想将一个图像(在服务器上可用)设置为窗口小部件背景。 以下内容不起作用,因为没有从URL

获取

代码:

Uri myUri = Uri.parse("http://videodet.com/cc-content/uploads/thumbs/g45EMgnPwsciIJdOSMQt.jpg");
remoteViews.setImageViewUri(R.id.widget_img, myUri);

1 个答案:

答案 0 :(得分:1)

  

uri没有从URL

获取

我认为你的网址可能有问题。

我建议您尝试以下方法检查网址:

        URI uri = null;
        URL url = null;

方法1:

        // Create a URI from url
        try {
            uri = new URI("http://www.google.com/");
            Log.d("URI created: " + uri);
        }
        catch (URISyntaxException e) {
            Log.e("URI Syntax Error: " + e.getMessage());
        }

方法2

        // Create a URL
        try {
            url = new URL("http://www.google.com/");
            Log.d("URL created: " + url);
        }
        catch (MalformedURLException e) {
            Log.e("Malformed URL: " + e.getMessage());
        }

        // Convert a URL to a URI
        try {
            uri = url.toURI();
            Log.d("URI from URL: " + uri);
        }
        catch (URISyntaxException e) {
            Log.e("URI Syntax Error: " + e.getMessage());
        }

注意:

我想指出setImageViewUri (int viewId, Uri uri)适用于Android平台特有的内容URI,而不是指定Internet资源的URI。

您可以尝试以下方法从服务器获取位图:

    private Bitmap getImageBitmap(String url) {
            Bitmap bm = null;
            try {
                URL aURL = new URL(url);
                URLConnection conn = aURL.openConnection();
                conn.connect();
                InputStream is = conn.getInputStream();
                BufferedInputStream bis = new BufferedInputStream(is);
                bm = BitmapFactory.decodeStream(bis);
                bis.close();
                is.close();
           } catch (IOException e) {
               Log.e(TAG, "Error getting bitmap", e);
           }
       return bm;
    }