Невозможно получить изображение из подключения, даже с разрешениями INTERNET - PullRequest
0 голосов
/ 07 июля 2011

У меня возникли проблемы при попытке создать растровое изображение из удаленного URL-адреса.Вот фрагмент:

    Bitmap bm = null;       

    URL aURL = null;
    try {
        aURL = new URL("http://developer.android.com/assets/images/home/honeycomb-android.png");                
    } catch (MalformedURLException e) {
        System.err.println(e);
    }

    if(aURL != null){
        URLConnection conn = null;
        BufferedInputStream bis = null;             
        InputStream is = null;

        try {
            conn = aURL.openConnection();
            conn.connect();
            is = conn.getInputStream();
            bis = new BufferedInputStream(is);
            bm = BitmapFactory.decodeStream(bis);                   
        } catch (Exception e) {
            System.err.println(e);
        } finally {
            if(bis != null){
                try {
                    bis.close();
                } catch (IOException e) {}
            }
            if(is != null){
                try {
                    is.close();
                } catch (IOException e) {}
            }
            conn = null;
        }       
    }

Я получаю исключение в строке conn.connect().Там написано java.net.SocketException: Permission denied.

Я уже добавил разрешение в манифест:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          android:versionCode="1"
          android:versionName="1.0" package="mypackage.namehere">
        <uses-sdk android:minSdkVersion="8" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
        <uses-permission android:name="android.permission.INTERNET"></uses-permission>


        <application android:icon="@drawable/icon" android:label="@string/app_name">

        </application>
    </manifest>

Я могу загрузить изображение как из браузера на компьютере, так и из браузера эмулятора.Там нет брандмауэра, блокирующего мое интернет-соединение.Пробовал с несколькими URL, но ничего не получилось.

Правильно ли я открываю соединение?Должен ли я использовать вместо HttpConnection?

Ответы [ 2 ]

0 голосов
/ 04 августа 2011

Приятель легкий, вы добавляете разрешения не в том месте

...
    </application>
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
</manifest>

после того, как ты рядом, видишь?

0 голосов
/ 07 июля 2011

Попробуйте.

Bitmap bm = null;       

URL aURL = null;
try {
    aURL = new URL("http://developer.android.com/assets/images/home/honeycomb-android.png");                
} catch (MalformedURLException e) {
    System.err.println(e);
}

if(aURL != null){
    HttpURLConnection conn = null;
    BufferedInputStream bis = null;             
    InputStream is = null;

    try {
        conn = (HttpURLConnection) aURL.openConnection();
        is = conn.getInputStream();
        bis = new BufferedInputStream(is);
        bm = BitmapFactory.decodeStream(bis);                   
    } catch (Exception e) {
        System.err.println(e);
    } finally {
        if(bis != null){
            try {
                bis.close();
            } catch (IOException e) {}
        }
        if(is != null){
            try {
                is.close();
            } catch (IOException e) {}
        }
        conn = null;
    }       
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...