Android giver udviklere direkte I / O til SD-kortet

En af de bedste ting ved Android-platformen er, at den har en tendens til at være mindre restriktiv end andre smartphone-operativsystemer. Sikker på, Android har et brugervenligt præferencesystem, der giver dig mulighed for at holde styr på nøgleværdipar, men hvis du har brug for en mere fleksibel tilgang, giver Android dig også mulighed for at læse og skrive direkte til et aftageligt SD-kort. Tag den iOS!

Det følgende eksempel viser både, hvordan man får adgang til SD-kortet på en Android-enhed og udfører enkle læse- og skrivehandlinger. Du kan følge med i trinvis vejledning eller downloade og importere hele projektet til Eclipse. Mens koden muligvis ser lidt skræmmende ud for begyndere, vil de, der kender Java, bemærke, at meget lidt af koden er Android-specifik. Med andre ord er manipulering af filer på Android meget som at manipulere filer på enhver platform, hvor Java kører.

1. Start et nyt Android-projekt i Eclipse. Mål Android 1.6 eller nyere. Sørg for at omdøbe startfilen Main.java.

2. Føj tilladelser til manifestet. Åbn /res/AndroidManifest.xml, og tilføj både læse- og skrivetilladelser til projektet.

AndroidManifest.xml

 "Http://schemas.android.com/apk/res/android" 
 package = "com.authorwjf.direct_file_io" 
 android: versionCode = "1" 
 android: versionName = "1.0" > 
 android: minSdkVersion = "4" 
 android: targetSdkVersion = "15" /> 
 "android.permission.WRITE_EXTERNAL_STORAGE" /> 
 "android.permission.READ_EXTERNAL_STORAGE" /> 
 android: icon = "@ drawable / ic_launcher" 
 android: label = "@ streng / app_navn" 
 android: theme = "@ style / AppTheme" > 
 android: name = ".Main" 
 android: label = "@ string / title_activity_main" > 
 "android.intent.action.MAIN" /> 
 "android.intent.category.LAUNCHER" /> 

3. Når du går videre til mappen / res / layout, skal du definere din main.xml-layoutfil. Layouten til dette projekt er et ligetil lineært layout, der indeholder to rediger tekstfelter og tre knapper.

main.xml

 "Http://schemas.android.com/apk/res/android" 
 xmlns: tools = "http://schemas.android.com/tools" 
 android: layout_width = "fill_parent" 
 android: layout_height = "fill_parent" 
 android: orientering = "lodret" 
 android: baggrund = "# 000000" > 
 android: layout_margin = "10dip" 
 android: layout_width = "fill_parent" 
 android: layout_height = "wrap_content" 
 android: singleLine = "sandt" 
 android: hint = "indtast tekst" 
 android: id = "@ + id / first_input_line" /> 
 android: layout_margin = "10dip" 
 android: layout_width = "fill_parent" 
 android: layout_height = "wrap_content" 
 android: singleLine = "sandt" 
 android: hint = "indtast noget mere tekst" 
 android: id = "@ + id / second_input_line" /> 
 android: layout_width = "fill_parent" 
 android: layout_height = "wrap_content" 
 android: tyngdekraft = "center" 
 android: orientering = "vandret" > 
 android: layout_width = "wrap_content" 
 android: layout_height = "wrap_content" 
 android: id = "@ + id / clear_button" 
 android: text = "Ryd" /> 
 android: layout_width = "wrap_content" 
 android: layout_height = "wrap_content" 
 android: id = "@ + id / load_button" 
 android: text = "Indlæs" /> 
 android: layout_width = "wrap_content" 
 android: layout_height = "wrap_content" 
 android: id = "@ + id / save_button" 
 android: text = "Gem" /> 

4. Nu er det tid til at skrive Main.java-koden. Start med nogle inkluderer, tilsidesættelse af on-start for at slå de tre knapper op, og et opkald tilbage for at håndtere knappetryk.

Main.java

 pakke com.authorwjf.direct_file_io; 
 import java.io.BufferedReader; 
 import java.io.BufferedWriter; 
 import java.io.File; 
 import java.io.FileReader; 
 import java.io.FileWriter; 
 import java.io.IOException; 
 import android.os.Bundle; 
 import android.os. Miljø; 
 import android.app.Aktivitet; 
 import android.view.View; 
 import android.view.View.OnClickListener; 
 import android.widget.EditText; 
 import android.widget.Toast; 
 public class Main udvider Aktivitetsimplementeringer OnClickListener { 
 @Override 
 offentligt tomrum onCreate (Bundle gemtInstanceState) { 
 super .onCreate (gemtInstanceState); 
 setContentView (R.layout. main ); 
 findViewById (R.id. clear_button ) .setOnClickListener ( dette ); 
 findViewById (R.id. save_button ) .setOnClickListener ( dette ); 
 findViewById (R.id. load_button ) .setOnClickListener ( dette ); 
 } 
 @Override 
 offentligt ugyldigt onClick (Vis v) { 
 switch (v.getId ()) { 
 sag R.id. clear_button : 
 ((EditText) findViewById (R.id. First_input_line )). SetText (""); 
 ((EditText) findViewById (R.id. Second_input_line )). SetText (""); 
 pause ; 
 sag R.id. load_button : 
 belastning(); 
 pause ; 
 sag R.id. save_button : 
 Gemme(); 
 pause ; 
 } 
 } 
 } 

5. Vi implementerer tre private funktioner til at håndtere filen I / O. Bortset fra opkaldene for at hente det eksterne lagringssystemkatalog, er dette standard Java-teknikker til at oprette en fil, hvis den ikke findes (sikre), og derefter læse og skrive.

Main.java

 privat tomrum sikre () { 
 File sdcard = Miljø. getExternalStorageDirectory (); 
 Filfil = ny fil (sdcard, "/ my_file.txt"); 
 if (! file.exists ()) { 
 prøv { 
 file.createNewFile (); 
 } fangst (IOException e) { 
 Ristet brød. makeText (getApplicationContext (), "Fejl ved oprettelse af fil!", Toast. LENGTH_LONG ) .show (); 
 } 
 } 
 } 
 privat tomrumsbelastning () { 
 sikre(); 
 File sdcard = Miljø. getExternalStorageDirectory (); 
 Filfil = ny fil (sdcard, "/ my_file.txt"); 
 prøv { 
 BufferedReader br = new BufferedReader ( ny FileReader (fil)); 
 Streng linje; 
 if ((linje = br.readLine ())! = null ) { 
 String  content = line.toString (). Split (":"); 
 ((EditText) findViewById (R.id. First_input_line )). SetText (indhold 0); 
 ((EditText) findViewById (R.id. Second_input_line )). SetText (indhold 1); 
 } 
 br.close (); 
 } 
 fangst (IOException e) { 
 Ristet brød. makeText (getApplicationContext (), "Fejl ved læsning af fil!", Toast. LENGTH_LONG ) .show (); 
 } 
 } 
 privat tomrum gemme () { 
 sikre(); 
 String firstLine = ((EditText) findViewById (R.id. First_input_line )). GetText (). ToString (). Trim (); 
 String secondLine = ((EditText) findViewById (R.id. Second_input_line )). GetText (). ToString (). Trim (); 
 File sdcard = Miljø. getExternalStorageDirectory (); 
 Filfil = ny fil (sdcard, "/ my_file.txt"); 
 prøv { 
 FileWriter fw = ny FileWriter (fil); 
 BufferedWriter bw = ny BufferedWriter (fw); 
 bw.write (Firstline + ":" + secondLine); 
 bw.close (); 
 } fangst (IOException e) { 
 Ristet brød. makeText (getApplicationContext (), "Fejl ved skrivning af fil!", toast. LENGTH_LONG ) .show (); 
 } 
 } 
Vi er næsten klar til at køre projektet. Hvis du indlæser den direkte på din enhed, behøver du ikke gøre noget andet. Hvis du planlægger at teste den på emulatoren, vil du gå ind og redigere din AVD-profil for at inkludere SD-lagring ( figur A ). Figur A

Når du har appen på din telefon eller emulator, skal resten være ret selvforklarende. Du kan indtaste nogle input i et af de to rediger tekstfelter og derefter trykke på Gem. Ved at trykke på Ryd, (du gætte det) ryddes felterne. Du kan bruge knappen Indlæs til at genopbygge formularen med tidligere gemte værdier. At gemme to linjer med tekst direkte på SD-kortet er selvfølgelig overdreven, men fil I / O-koncepterne skaleres let for at imødekomme et hvilket som helst antal scenarier i den virkelige verden. ( Figur B ) Figur B

© Copyright 2021 | pepebotifarra.com