0

リモート 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 を使用する必要がありますか?

4

2 に答える 2

0

これを試してみてください。

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;
    }       
}
于 2011-07-07T13:05:10.833 に答える
0

バディ簡単、間違った場所に権限を追加しています

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

閉じた後、あなたは見ることができますか?

于 2011-08-04T17:13:23.730 に答える