lukas6410
Messages postés25Date d'inscriptionmardi 24 mars 2020StatutMembreDernière intervention19 mai 2021
-
Modifié le 25 mars 2020 à 11:46
BunoCS
Messages postés15475Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention23 avril 2024
-
18 mai 2020 à 14:17
Bonjour,
j,ai une class java qui me permet d'ecrire et de lire un fichier sur le stockage externe (StorageUtils)voir si dessous:
package com.example.mycontact;
import android.content.Context;
import android.os.Environment;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
public class StorageUtils {
private static File createOrGetFile(File destination, String filename, String foldername){
File folder = new File(destination,foldername);
return new File(folder,filename);
}
private static String readOnFile(Context context, File file){
String result = null;
if (file.exists()){
BufferedReader br;
try {
br = new BufferedReader(new FileReader(file));
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null){
sb.append(line);
sb.append("\n");
line = br.readLine();
}
result = sb.toString();
}
finally {
br.close();
}
}
catch (IOException e){
Toast.makeText(context,context.getString(R.string.error_happened),Toast.LENGTH_LONG).show();
}
}
return result;
}
private static void writeOnFile(Context context,String text,File file){
try{
file.getParentFile().mkdirs();
FileOutputStream fos = new FileOutputStream(file);
Writer w =new BufferedWriter(new OutputStreamWriter(fos));
try{
w.write(text);
w.flush();
fos.getFD().sync();
}finally {
w.close();
Toast.makeText(context,context.getString(R.string.saved),Toast.LENGTH_LONG).show();
}
}catch (IOException e){
Toast.makeText(context,context.getString(R.string.error_happened),Toast.LENGTH_LONG).show();
}
}
public static String getTextFromStorage(File rootDestination,Context context,String filename,String foldername){
File file = createOrGetFile(rootDestination,filename,foldername);
return readOnFile(context,file);
}
public static void setTextInStorage(File rootDestination,Context context,String filename,String foldername,String text){
File file = createOrGetFile(rootDestination,filename,foldername);
writeOnFile(context,text,file);
}
public static boolean isExternalStorageWritable(){
String state = Environment.getExternalStorageState();
return (Environment.MEDIA_MOUNTED.equals(state));
}
public static boolean isExternalStorageReadable(){
String state = Environment.getExternalStorageState();
return(Environment.MEDIA_MOUNTED.equals(state)|| Environment.MEDIA_MOUNTED_READ_ONLY.equals(state));
}
}
voila et j,ai mon activité ou je veux récupéré et sauvergader une String sur un fichier externe:
package com.example.mycontact;
import android.content.Context;
import android.os.Build;
import android.os.Environment;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
import java.io.File;
public class Register_Activity extends AppCompatActivity {
private String nom_enter;
private int compteur_verif=0;
private EditText editText;
private String prenom_enter;
private String num_enter;
private String adress_enter;
private EditText nom ;
private EditText prenom ;
private EditText num ;
private EditText adress;
private Button valider;
private static final String FILENAME = "mescontacts.txt";
private static final String FOLDERNAME = "mescontacts";
private static final int RC_STORAGE_WRITE_PERMS = 100;
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.newcontact);
nom=(EditText)findViewById(R.id.nom_enter);
prenom=(EditText)findViewById(R.id.prenom_enter);
num=(EditText)findViewById(R.id.num_enter);
adress=(EditText)findViewById(R.id.adress_enter);
valider=(Button)findViewById(R.id.button);
num.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
valider.setEnabled(true);
}
@Override
public void afterTextChanged(Editable s) {
nom_enter=num.getText().toString();
}
});
nom.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
valider.setEnabled(true);
}
@Override
public void afterTextChanged(Editable s) {
prenom_enter=prenom.getText().toString();
}
});
valider.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
adress_enter=adress.getText().toString();
if (num.length() != 10){
valider.setEnabled(false);
Toast.makeText(getApplicationContext(),"le numéro n'est pas valide",Toast.LENGTH_LONG).show();
}
if(nom.length() <= 0){
valider.setEnabled(false);
Toast.makeText(getApplicationContext(),"vous avez oublier le nom",Toast.LENGTH_LONG).show();
}
if(num.length() == 10){
save();
Toast.makeText(getApplicationContext(),"sauvegarde",Toast.LENGTH_LONG).show();
}
}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
this.readFromStorage();
}
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
private void save(){
this.writeOnExternalStorage();
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
private void readFromStorage(){
if(StorageUtils.isExternalStorageReadable()){
this.num.setText
(StorageUtils.getTextFromStorage(getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS),this,FILENAME,FOLDERNAME));
}
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
private void writeOnExternalStorage(){
if (StorageUtils.isExternalStorageWritable()){
StorageUtils.setTextInStorage
(Environment.getExternalStoragePublicDirectory
(Environment.DIRECTORY_DOCUMENTS),this,FILENAME,FOLDERNAME,this.num.getText().toString());
}else{
Toast.makeText(this,getString(R.string.external_storage_impossible_create_file),Toast.LENGTH_LONG).show();
}
}
}
je pense qu'il y a un problème avec la methode save(),et j,ai portant aussi déclarer les permission dans le Manifest si quelqu'un peux m'aider ou demande d'autres renseignement
samigtx1459
Messages postés482Date d'inscriptionvendredi 3 août 2012StatutMembreDernière intervention13 janvier 202467 Modifié le 17 mai 2020 à 18:55
Tu es dans la mauvaise catégorie tu devrais être dans la catégorie Android et pas Java
KX
Messages postés16734Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention24 avril 20243 015 18 mai 2020 à 12:45
Bonjour,
J'ai déplacé la discussion dans le forum Android.
Notons cependant que les programmes Android sont codés en Java, bien qu'ils utilisent des librairies spécifiques.
18 mai 2020 à 12:45
J'ai déplacé la discussion dans le forum Android.
Notons cependant que les programmes Android sont codés en Java, bien qu'ils utilisent des librairies spécifiques.