2012-07-23 3 views
1

J'ai un problème, mon application fonctionne bien sur mon Galaxy Tab 7.7 GT-P6800, que j'utilise à des fins de débogage, et sur mon Galaxy Pocket il fonctionne et crée un dossier à placer le fichier et même en prenant des entrées et tout ça mais ça ne crée pas le fichier. Je développe en éclipse et le build SDK pour l'application est Android 2.3.3 (API 10).Android: App fonctionne bien sur un appareil et ne fonctionne pas sur un autre

Le code de l'application est donnée ci-dessous, ne peut pas trouver ce que le problème est ...

package com.android.app1; 

public class MainActivity extends Activity { 

//Timestamp for file name e.g. Data_7-19-2012 
SimpleDateFormat s1 = new SimpleDateFormat("MM-dd-yyyy_hh:mm:ss"); 
final String format1 = s1.format(new Date()); 

final public String FileName = "Data_"+format1+".csv"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    final EditText addbarcode = (EditText) findViewById(R.id.editText1); 
addbarcode.setOnKeyListener(new OnKeyListener() 
    { 
     public boolean onKey(View v, int keyCode, KeyEvent event) 
     { 
      if (event.getAction() == KeyEvent.ACTION_DOWN) 
      { 
       switch (keyCode) 
       { 
        case KeyEvent.KEYCODE_ENTER: 

         //to get Timestamp 
         SimpleDateFormat s = new SimpleDateFormat("MM-dd-yyyy hh:mm:ss"); 
         String format = s.format(new Date()); 

         //get barcode in a variable 
         Editable barcode = addbarcode.getText(); 

         final String DATASTRING = new String(""+barcode+","+format+""); 



         try 
         { 
          File root = new File(Environment.getExternalStorageDirectory(), "BarcodeData"); 

          if (!root.exists()) { 
           root.mkdirs(); 

          } 

         //Showing file directory 
         TextView etDir= (TextView)findViewById(R.id.textView1); 
          etDir.setText(root.toString()); 


          File gpxfile = new File(root, FileName); 

          BufferedWriter bW; 

          bW = new BufferedWriter(new FileWriter(gpxfile, true)); 
          bW.write(DATASTRING); 
          bW.newLine(); 
          bW.flush(); 
          bW.close(); 

         } 
         catch(IOException e) 
         { 
          e.printStackTrace(); 
         } 
      String readString = new String(DATASTRING); 
        TextView etData= (TextView)findViewById(R.id.textView2); 

        etData.setText(readString); 

         //Clear the editview for new entries 
         addbarcode.setText(""); 
         return true; 
        default: 
         break; 
       } 
      } 
      return false; 
     } 
    }); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 


@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.send: 

      final File dir = getFilesDir(); 

      final File shareFile = new File(dir, FileName); 
      Uri u1 = null; 
      u1 = Uri.fromFile(shareFile); 

      Intent sendIntent = new Intent(Intent.ACTION_SEND); 
      sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Person Details"); 
      sendIntent.putExtra(Intent.EXTRA_STREAM, u1); 
      sendIntent.setType("text/csv"); 
      startActivity(sendIntent); 
      break; 
    } 
    return true; 
} 
} 

J'ai même ajouté les autorisations requises

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

et même définir la génération Java propriété Path de propriétés du projet.

Répondre

1

Voir getExternalStorageDirectory() docs. Obtient le répertoire de stockage externe Android.

Ce répertoire ne peut actuellement pas être accessible s'il a été monté par l'utilisateur sur son ordinateur , s'il a été supprimé de l'appareil ou si un autre problème est survenu. Vous pouvez déterminer son état actuel avec getExternalStorageState().

Cochez-la pour null avant de l'utiliser.

+0

J'ai utilisé cette vérification mais toujours pas de chance J'ai ajouté le code suivant dans celui ci-dessus 'Boolean isSDPresent = android.os.Environment.getExternalStorageState(). Est égal à (android.os.Environment.MEDIA_MOUNTED); si (isSDPresent) {// oui carte SD est présente } { autre // Désolé } 'Et son vrai, mais toujours pas les fichiers. –

+0

Est-ce que quelqu'un sait ce qui me manque? Je veux vraiment en finir avec. Merci pour l'aide. –

+0

Pouvez-vous poster votre logcat? – biegleux

Questions connexes