2011-06-28 9 views
1

J'ai un problème pour stocker l'image dans la voiture sd, il n'y a pas de fichier d'affichage dans la carte SD que je veux. c'est le code.problème pour stocker des données dans la carte SD

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

Avez-vous une autorisation dans votre fichier manifest pour écrire sur la carte SD? Supprimez également l'exception catching pour l'instant, afin que vous puissiez lire l'erreur dans Logcat. La permission:

+0

Vous devriez essayer d'ajouter un peu plus d'informations. Qu'est ce qui échoue? Quel message d'erreur obtenez-vous? N'avez-vous pas une erreur, mais cela ne fonctionne pas comme prévu? Je ne répondrai pas à la question (parce que je ne suis pas familier avec ce genre de choses), mais essayez d'inclure autant de détails utiles que possible. – Alex

+0

je ajoute cette android: name = "android.permission.WRITE_EXTERNAL_STORAGE" en manifeste mais, toujours pas correct –

Répondre

2

ajouter ces lignes dans votre code:

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

et vous remarquerez une exception que l'URL est mal formée. Ajouter plus d'informations sur ce que vous voulez réaliser afin que je puisse écrire une meilleure réponse.


L'exception dans votre commentaire pourrait être lié avec une sorte d'un bug dans Android: http://code.google.com/p/android/issues/detail?id=2764. Vous pouvez essayer avec cette solution: Android java.net.UnknownHostException: Host is unresolved (strategy question) ou donner l'adresse IP au lieu de DNS.

Ici vous avez le code testé:

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: Protocole inconnu: c –

+1

Finalement, le code lié à l'écriture sur carte SD n'est jamais exécuté. D'où voulez-vous prendre l'image? C: // Documents et paramètres // amitp // Desktop // Winter.jpg indique que c'est à partir d'un ordinateur ... – bart

+0

ya c'est de l'ordinateur. –

0

vous devez utiliser Environment.getExternalStorageDirectory() au lieu de mnt/sdcard/

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

est là donner une permission dans le fichier manifeste? –

+0

oui vous avez besoin de cette autorisation seulement Sujit

+0

mais toujours pas obtenir correctement –

0

Votre problème est que vous référencez vos ordinateurs hôtes système de fichiers local dans votre appareil Android. C: \ n'est pas un chemin qu'Android sait interpréter.

hôte sur un serveur web local puis utiliser quelque chose comme http://192.168.0.100/your/url/image.png

Questions connexes