2011-06-28 9 views
1

私はsdカーにイメージを保存するには問題があります。私が望むsdcardには表示ファイルがありません。 これはコードです。データをsdcardに保存するのに問題があります

package com.sdcard; 

import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.net.URL; 

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Environment; 

public class SdcardActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    try{ 
    URL url = new URL ("http://www.coolpctips.com/wp-content/uploads/2011/05/top-30-android- games.jpg"); 

    InputStream input = url.openStream(); 
    try { 
     OutputStream output = new FileOutputStream (Environment.getExternalStorageDirectory()+"/top-30-android-games.jpg"); 
     try { 
      int aReasonableSize = 10; 
      byte[] buffer = new byte[aReasonableSize]; 
      int bytesRead = 0; 
      while ((bytesRead = input.read(buffer, 0, buffer.length)) >= 0) { 
       output.write(buffer, 0, buffer.length); 
      } 
     } finally { 
      output.close(); 
     } 
    } finally { 
     input.close(); 
    } 
    }catch (Exception e) { 
     e.printStackTrace(); 
    } 
}} 
+0

のようなものを使うのか?また、ここで例外をキャッチする例外を削除して、Logcatでエラーを読み取ることができます。アクセス許可:

+0

さらに詳しい情報を追加してください。何が失敗するのですか?どのようなエラーメッセージが表示されますか?エラーはありませんが、期待どおりに動作しませんか?私は質問に答えるつもりはない(私はこのことに慣れていないので)、できるだけ多くの役に立つ情報を含めるようにしてください。 – Alex

+0

これをアンドロイド:name = "android.permission.WRITE_EXTERNAL_STORAGE"をマニフェストに追加しますが、まだ適切ではありません –

答えて

2

Environment.getExternalStorageDirectory()を使用する必要があります。

catch (Exception e) { 
    e.printStackTrace(); 
} 

を、あなたは気づくでしょうURLが不正であるという例外です。私がより良い答えを書くことができるように、達成したいことに関するより多くの情報を追加してください。


あなたのコメントで例外は、Androidのバグのいくつかの種類に関連するかもしれない: http://code.google.com/p/android/issues/detail?id=2764。この解決策を試すことができます:Android java.net.UnknownHostException: Host is unresolved (strategy question)またはDNSの代わりにIPアドレスを指定します。

ここでは、テストされているコード:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    try{ 
    URL url = new URL ("http://www.coolpctips.com/wp-content/uploads/2011/05/top-30-android-games.jpg"); 
    InputStream input = url.openStream(); 
    try { 
     OutputStream output = new FileOutputStream (Environment.getExternalStorageDirectory()+"/top-30-android-games.jpg"); 
     int aReasonableSize = 1000; 
     byte[] buffer = new byte[aReasonableSize]; 
     int bytesRead = 0;; 
     try { 
      while ((bytesRead = input.read(buffer)) > 0) { 
       output.write(buffer, 0, bytesRead); 
      } 
     } finally { 
      output.close(); 
     } 
    } finally { 
     input.close(); 
    } 
    }catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

06-28 12:14:23.995:WARN/System.err(2636):java .net.MalformedURLException:不明なプロトコル:c –

+1

最終的には、コードはsdcardに書き込まれずに実行されませんでした。どこから画像を撮りたいですか? C:// Documents and Settings // amitp // Desktop // Winter.jpgはコンピュータからのものであることを示します。 – bart

+0

yaコンピュータからです。 –

0

あなたのコードでは、この行を追加する代わりに、MNT/SDカード/

OutputStream output = new FileOutputStream (Environment.getExternalStorageDirectory()+"/myImage.png"); 
+0

マニフェストファイルにアクセス許可がありますか? –

+0

はいこの許可が必要なのは、 Sujit

+0

ですが、まだ正しく取得されていません。 –

0

あなたの問題は、あなたのホストコンピュータあなたのAndroidデバイス内のローカルファイルシステムを参照しています。 C:\はアンドロイドが解釈する方法を知っているパスではありません。ローカルWebサーバ上の

ホストそれは、あなたはSDカードへの書き込みをマニフェストファイルにアクセス権を持っていますかhttp://192.168.0.100/your/url/image.png

関連する問題