2011-07-07 10 views
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を使用する必要がありますか?

+0

あなたは一度私が好きな時に私がこの画像を見ることができるwebviewの使用で快適ですか? –

+0

暗闇の中で撮影:マニフェストを投稿できますか? – Otra

+0

@Otraここにあります、上記で編集しました。 –

答えて

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; 
    }  
} 
+0

動作しません。同じ例外がスローされます。 –

+0

これは奇妙です。編集したコードと元のコードの両方を問題なくテストしました。私が考え得る唯一のことは、あなたがプロキシやファイアウォールの背後にいるかのどちらかであることですが、すでにどちらも持っていないと言っています。 – Otra

0

簡単バディ、あなたはあなたが見ることができる閉じ

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

後に間違った場所に権限を追加していますか?

+0

私はあなたの意見は表示されません。私のAndroidManifestでは、彼らは同じレベルにあります。私は要素の前後に追加しても差がないとは思わない。いずれにしても、プラグインマニフェストエディタを使用して追加されたので、うまくいくはずです。 –

関連する問題