Hướng Dẫn Lập Trình Android Với Bộ Lưu Trữ Ngoài (External Storage)
Có thể bạn quan tâm
- Tất cả tài liệu
- Java
- Java Basic
- Java Collections Framework
- Java IO
- Java New IO
- Java Date Time
- Servlet/JSP
- Eclipse Tech
- SWT
- RCP
- RAP
- Eclipse Plugin Tools
- XML & HTML
- Java Opensource
- Java Application Servers
- Maven
- Gradle
- Servlet/Jsp
- Thymeleaf
- Spring
- Spring Boot
- Spring Cloud
- Struts2
- Hibernate
- Java Web Service
- JavaFX
- SWT
- Oracle ADF
- Android
- iOS
- Python
- Swift
- C#
- C/C++
- Ruby
- Dart
- Batch
- Database
- Oracle
- MySQL
- SQL Server
- PostGres
- Other Database
- Oracle APEX
- Report
- Client
- ECMAScript / Javascript
- TypeScript
- NodeJS
- ReactJS
- Flutter
- AngularJS
- HTML
- CSS
- Bootstrap
- OS
- Ubuntu
- Solaris
- Mac OS
- VPS
- Git
- SAP
- Amazon AWS
- Khác
- Chưa phân loại
- Phần mềm & ứng dụng tiện ích
- VirtualBox
- VmWare
- Android External Storage
- Ví dụ đọc ghi file trên bộ lưu trữ ngoài
- Phụ lục: Thiết kế giao diện
1. Android External Storage
Android External Storage: là nơi lưu trữ dữ liệu ngoài của Android, các file dữ liệu lưu trữ mà bạn lưu trữ tại đây không được hệ thống áp dụng bảo mật.Thông thường có 2 loại lưu trữ ngoài (external storage).- Lưu trữ ngoài cố định: Thường được hiểu là ổ cứng của điện thoại.
- Lưu trữ ngoài lưu động (Removeable Storage): Chẳng hạn SD Card.
| Phương thức | Trả về |
| getDataDirectory() | /data |
| getDownloadCacheDirectory() | /cache |
| getExternalStorageState() | mounted |
| getExternalStoragePublicDirectory(Environment.Music): | /storage/emulated/0/Music |
| getDownloadCacheDirectory() | /cache |
| getRootDirectory() | /system |

- Hướng dẫn sử dụng Android Device File Explorer
2. Ví dụ đọc ghi file trên bộ lưu trữ ngoài
Tạo một project có tên ExternalStorageDemo.- File > New > New Project > Empty Activity
- Name: ExternalStorageDemo
- Package name: org.o7planning.externalstoragedemo
- Language: Java
Cấu hình AndroidManifest.xml cho phép đọc ghi dữ liệu trên bộ nhớ lưu trữ ngoài.<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>Nội dung đầy đủ của AndroidManifest.xml:AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.o7planning.externalstoragedemo"> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>Giao diện ứng dụng:
Nếu bạn quan tâm đến các bước thiết kế giao diện của ứng dụng này xin hãy xem phần phụ lục phía cuối bài viết.activity_main.xml<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <EditText android:id="@+id/editText" android:layout_width="0dp" android:layout_height="48dp" android:layout_marginStart="16dp" android:layout_marginLeft="16dp" android:layout_marginTop="19dp" android:layout_marginEnd="16dp" android:layout_marginRight="16dp" android:ems="10" android:inputType="textPersonName" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <LinearLayout android:id="@+id/linearLayout" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginLeft="16dp" android:layout_marginTop="16dp" android:layout_marginEnd="16dp" android:layout_marginRight="16dp" android:orientation="horizontal" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/editText"> <Button android:id="@+id/button_save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:text="Save" /> <Button android:id="@+id/button_read" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:text="Read" /> <Button android:id="@+id/button_list" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:text="List Dirs" /> </LinearLayout> <TextView android:id="@+id/textView" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginStart="16dp" android:layout_marginLeft="16dp" android:layout_marginTop="16dp" android:layout_marginEnd="16dp" android:layout_marginRight="16dp" android:layout_marginBottom="16dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/linearLayout" /> </androidx.constraintlayout.widget.ConstraintLayout>MainActivity.javapackage org.o7planning.externalstoragedemo; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import android.Manifest; import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; public class MainActivity extends AppCompatActivity { private EditText editText; private TextView textView; private Button saveButton; private Button readButton; private Button listButton; private static final String LOG_TAG = "ExternalStorageDemo"; private static final int REQUEST_ID_READ_PERMISSION = 100; private static final int REQUEST_ID_WRITE_PERMISSION = 200; private final String fileName = "note.txt"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText) findViewById(R.id.editText); textView = (TextView) findViewById(R.id.textView); saveButton = (Button) findViewById(R.id.button_save); readButton = (Button) findViewById(R.id.button_read); listButton = (Button) findViewById(R.id.button_list); saveButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { askPermissionAndWriteFile(); } }); readButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { askPermissionAndReadFile(); } }); listButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { listExternalStorages(); } }); } private void askPermissionAndWriteFile() { boolean canWrite = this.askPermission(REQUEST_ID_WRITE_PERMISSION, Manifest.permission.WRITE_EXTERNAL_STORAGE); if(!canWrite) { Toast.makeText(getApplicationContext(), "You do not allow this app to write files.", Toast.LENGTH_LONG).show(); return; } // this.writeFile(); } private void askPermissionAndReadFile() { boolean canRead = this.askPermission(REQUEST_ID_READ_PERMISSION, Manifest.permission.READ_EXTERNAL_STORAGE); // if (!canRead) { Toast.makeText(getApplicationContext(), "You do not allow this app to read files.", Toast.LENGTH_LONG).show(); return; } // this.readFile(); } // With Android Level >= 23, you have to ask the user // for permission with device (For example read/write data on the device). private boolean askPermission(int requestId, String permissionName) { Log.i(LOG_TAG, "Ask for Permission: " + permissionName); Log.i(LOG_TAG, "Build.VERSION.SDK_INT: " + android.os.Build.VERSION.SDK_INT); if (android.os.Build.VERSION.SDK_INT >= 23) { // Check if we have permission int permission = ActivityCompat.checkSelfPermission(this, permissionName); Log.i(LOG_TAG, "permission: " + permission); Log.i(LOG_TAG, "PackageManager.PERMISSION_GRANTED: " + PackageManager.PERMISSION_GRANTED); if (permission != PackageManager.PERMISSION_GRANTED) { // If don't have permission so prompt the user. this.requestPermissions( new String[]{permissionName}, requestId ); return false; } } return true; } // As soon as the user decides, allows or doesn't allow. @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); // // Note: If request is cancelled, the result arrays are empty. if (grantResults.length > 0) { switch (requestCode) { case REQUEST_ID_READ_PERMISSION: { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { readFile(); } } case REQUEST_ID_WRITE_PERMISSION: { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { writeFile(); } } } } else { Toast.makeText(getApplicationContext(), "Permission Cancelled!", Toast.LENGTH_SHORT).show(); } } // IMPORTANT!! public File getAppExternalFilesDir() { if (android.os.Build.VERSION.SDK_INT >= 29) { // /storage/emulated/0/Android/data/org.o7planning.externalstoragedemo/files return this.getExternalFilesDir(null); } else { // @Deprecated in API 29. // /storage/emulated/0 return Environment.getExternalStorageDirectory(); } } private void writeFile() { try { File extStore = this.getAppExternalFilesDir( ); boolean canWrite = extStore.canWrite(); Log.i(LOG_TAG, "Can write: " + extStore.getAbsolutePath()+" : " + canWrite); // ==> /storage/emulated/0/note.txt (API < 29) // ==> /storage/emulated/0/Android/data/org.o7planning.externalstoragedemo/files/note.txt (API >=29) String path = extStore.getAbsolutePath() + "/" + fileName; Log.i(LOG_TAG, "Save to: " + path); String data = editText.getText().toString(); Log.i(LOG_TAG, "Data: " + data); File myFile = new File(path); FileOutputStream fOut = new FileOutputStream(myFile); fOut.write(data.getBytes("UTF-8")); fOut.close(); Toast.makeText(getApplicationContext(), fileName + " saved", Toast.LENGTH_LONG).show(); } catch (Exception e) { Toast.makeText(getApplicationContext(), "Write Error:" + e.getMessage(), Toast.LENGTH_LONG).show(); Log.e(LOG_TAG, "Write Error: " + e.getMessage()); e.printStackTrace(); } } private void readFile() { File extStore = this.getAppExternalFilesDir(); // ==> /storage/emulated/0/note.txt (API < 29) // ==> /storage/emulated/0/Android/data/org.o7planning.externalstoragedemo/note.txt (API >=29) String path = extStore.getAbsolutePath() + "/" + fileName; Log.i(LOG_TAG, "Read file: " + path); String s = ""; String fileContent = ""; try { File myFile = new File(path); FileInputStream fIn = new FileInputStream(myFile); BufferedReader myReader = new BufferedReader( new InputStreamReader(fIn)); while ((s = myReader.readLine()) != null) { fileContent += s + "\n"; } myReader.close(); this.textView.setText(fileContent); } catch (IOException e) { Toast.makeText(getApplicationContext(), "Read Error:" + e.getMessage(), Toast.LENGTH_LONG).show(); Log.e(LOG_TAG, "Read Error: " + e.getMessage()); e.printStackTrace(); } Toast.makeText(getApplicationContext(), fileContent, Toast.LENGTH_LONG).show(); } private void listExternalStorages() { StringBuilder sb = new StringBuilder(); sb.append("Data Directory: ").append("\n - ") .append(Environment.getDataDirectory().toString()).append("\n"); sb.append("Download Cache Directory: ").append("\n - ") .append(Environment.getDownloadCacheDirectory().toString()).append("\n"); sb.append("External Storage State: ").append("\n - ") .append(Environment.getExternalStorageState().toString()).append("\n"); sb.append("External Storage Directory: ").append("\n - ") .append(Environment.getExternalStorageDirectory().toString()).append("\n"); sb.append("Is External Storage Emulated?: ").append("\n - ") .append(Environment.isExternalStorageEmulated()).append("\n"); sb.append("Is External Storage Removable?: ").append("\n - ") .append(Environment.isExternalStorageRemovable()).append("\n"); sb.append("External Storage Public Directory (Music): ").append("\n - ") .append(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).toString()).append("\n"); sb.append("Download Cache Directory: ").append("\n - ") .append(Environment.getDownloadCacheDirectory().toString()).append("\n"); sb.append("Root Directory: ").append("\n - ") .append(Environment.getRootDirectory().toString()).append("\n"); Log.i(LOG_TAG, sb.toString()); this.textView.setText(sb.toString()); } }
Ứng dụng sẽ lưu 1 tập tin xuống SD Card của thiết bị giả lập (Emulator), vì vậy hãy đảm bảo rằng bạn thiết bị của bạn đã thiết lập SD Card.Chạy ứng dụng:

Xem thêm về công cụ "Device File Explorer".
- Hướng dẫn sử dụng Android Device File Explorer
3. Phụ lục: Thiết kế giao diện
Thêm EditText và các Button vào giao diện.
Thêm 1 TextView vào giao diện.
Sét đặt ID, Text cho các thành phần trên giao diện:
Các hướng dẫn lập trình Android
- Cấu hình Android Emulator trong Android Studio
- Hướng dẫn và ví dụ Android ToggleButton
- Tạo một File Finder Dialog đơn giản trong Android
- Hướng dẫn và ví dụ Android TimePickerDialog
- Hướng dẫn và ví dụ Android DatePickerDialog
- Bắt đầu với Android cần những gì?
- Cài đặt Android Studio trên Windows
- Cài đặt Intel® HAXM cho Android Studio
- Hướng dẫn và ví dụ Android AsyncTask
- Hướng dẫn và ví dụ Android AsyncTaskLoader
- Hướng dẫn lập trình Android cho người mới bắt đầu - Các ví dụ cơ bản
- Làm sao biết số số điện thoại của Android Emulator và thay đổi nó
- Hướng dẫn và ví dụ Android TextInputLayout
- Hướng dẫn và ví dụ Android CardView
- Hướng dẫn và ví dụ Android ViewPager2
- Lấy số điện thoại trong Android sử dụng TelephonyManager
- Hướng dẫn và ví dụ Android Phone Call
- Hướng dẫn và ví dụ Android Wifi Scanning
- Hướng dẫn lập trình Android Game 2D cho người mới bắt đầu
- Hướng dẫn và ví dụ Android DialogFragment
- Hướng dẫn và ví dụ Android CharacterPickerDialog
- Hướng dẫn lập trình Android cho người mới bắt đầu - Hello Android
- Hướng dẫn sử dụng Android Device File Explorer
- Bật tính năng USB Debugging trên thiết bị Android
- Hướng dẫn và ví dụ Android UI Layouts
- Hướng dẫn và ví dụ Android SMS
- Hướng dẫn lập trình Android với Database SQLite
- Hướng dẫn và ví dụ Google Maps Android API
- Hướng dẫn chuyển văn bản thành lời nói trong Android
- Hướng dẫn và ví dụ Android Space
- Hướng dẫn và ví dụ Android Toast
- Tạo một Android Toast tùy biến
- Hướng dẫn và ví dụ Android SnackBar
- Hướng dẫn và ví dụ Android TextView
- Hướng dẫn và ví dụ Android TextClock
- Hướng dẫn và ví dụ Android EditText
- Hướng dẫn và ví dụ Android TextWatcher
- Định dạng số thẻ tín dụng với Android TextWatcher
- Hướng dẫn và ví dụ Android Clipboard
- Tạo một File Chooser đơn giản trong Android
- Hướng dẫn và ví dụ Android AutoCompleteTextView và MultiAutoCompleteTextView
- Hướng dẫn và ví dụ Android ImageView
- Hướng dẫn và ví dụ Android ImageSwitcher
- Hướng dẫn và ví dụ Android ScrollView và HorizontalScrollView
- Hướng dẫn và ví dụ Android WebView
- Hướng dẫn và ví dụ Android SeekBar
- Hướng dẫn và ví dụ Android Dialog
- Hướng dẫn và ví dụ Android AlertDialog
- Hướng dẫn và ví dụ Android RatingBar
- Hướng dẫn và ví dụ Android ProgressBar
- Hướng dẫn và ví dụ Android Spinner
- Hướng dẫn và ví dụ Android Button
- Hướng dẫn và ví dụ Android Switch
- Hướng dẫn và ví dụ Android ImageButton
- Hướng dẫn và ví dụ Android FloatingActionButton
- Hướng dẫn và ví dụ Android CheckBox
- Hướng dẫn và ví dụ Android RadioGroup và RadioButton
- Hướng dẫn và ví dụ Android Chip và ChipGroup
- Sử dụng các tài sản ảnh và biểu tượng của Android Studio
- Thiết lập SD Card cho Android Emulator
- Ví dụ với ChipGroup và các Chip Entry
- Làm sao thêm thư viện bên ngoài vào dự án Android trong Android Studio?
- Làm sao loại bỏ các quyền đã cho phép trên ứng dụng Android
- Làm sao loại bỏ các ứng dụng ra khỏi Android Emulator?
- Hướng dẫn và ví dụ Android LinearLayout
- Hướng dẫn và ví dụ Android TableLayout
- Hướng dẫn và ví dụ Android FrameLayout
- Hướng dẫn và ví dụ Android QuickContactBadge
- Hướng dẫn và ví dụ Android StackView
- Hướng dẫn và ví dụ Android Camera
- Hướng dẫn và ví dụ Android MediaPlayer
- Hướng dẫn và ví dụ Android VideoView
- Phát hiệu ứng âm thanh trong Android với SoundPool
- Hướng dẫn lập trình mạng trong Android - Android Networking
- Hướng dẫn xử lý JSON trong Android
- Lưu trữ dữ liệu trên thiết bị với Android SharedPreferences
- Hướng dẫn lập trình Android với bộ lưu trữ trong (Internal Storage)
- Hướng dẫn lập trình Android với bộ lưu trữ ngoài (External Storage)
- Hướng dẫn sử dụng Intent trong Android
- Ví dụ về một Android Intent tường minh, gọi một Intent khác
- Ví dụ về Android Intent không tường minh, mở một URL, gửi một email
- Hướng dẫn sử dụng Service trong Android
- Hướng dẫn sử dụng thông báo trong Android - Android Notification
- Hướng dẫn và ví dụ Android DatePicker
- Hướng dẫn và ví dụ Android TimePicker
- Hướng dẫn và ví dụ Android Chronometer
- Hướng dẫn và ví dụ Android OptionMenu
- Hướng dẫn và ví dụ Android ContextMenu
- Hướng dẫn và ví dụ Android PopupMenu
- Hướng dẫn và ví dụ Android Fragment
- Hướng dẫn và ví dụ Android ListView
- Android ListView với Checkbox sử dụng ArrayAdapter
- Hướng dẫn và ví dụ Android GridView
- Các hướng dẫn lập trình Flutter

Các hướng dẫn lập trình Android
- Cấu hình Android Emulator trong Android Studio
- Hướng dẫn và ví dụ Android ToggleButton
- Tạo một File Finder Dialog đơn giản trong Android
- Hướng dẫn và ví dụ Android TimePickerDialog
- Hướng dẫn và ví dụ Android DatePickerDialog
- Bắt đầu với Android cần những gì?
- Cài đặt Android Studio trên Windows
- Cài đặt Intel® HAXM cho Android Studio
- Hướng dẫn và ví dụ Android AsyncTask
- Hướng dẫn và ví dụ Android AsyncTaskLoader
- Hướng dẫn lập trình Android cho người mới bắt đầu - Các ví dụ cơ bản
- Làm sao biết số số điện thoại của Android Emulator và thay đổi nó
- Hướng dẫn và ví dụ Android TextInputLayout
- Hướng dẫn và ví dụ Android CardView
- Hướng dẫn và ví dụ Android ViewPager2
- Lấy số điện thoại trong Android sử dụng TelephonyManager
- Hướng dẫn và ví dụ Android Phone Call
- Hướng dẫn và ví dụ Android Wifi Scanning
- Hướng dẫn lập trình Android Game 2D cho người mới bắt đầu
- Hướng dẫn và ví dụ Android DialogFragment
- Hướng dẫn và ví dụ Android CharacterPickerDialog
- Hướng dẫn lập trình Android cho người mới bắt đầu - Hello Android
- Hướng dẫn sử dụng Android Device File Explorer
- Bật tính năng USB Debugging trên thiết bị Android
- Hướng dẫn và ví dụ Android UI Layouts
- Hướng dẫn và ví dụ Android SMS
- Hướng dẫn lập trình Android với Database SQLite
- Hướng dẫn và ví dụ Google Maps Android API
- Hướng dẫn chuyển văn bản thành lời nói trong Android
- Hướng dẫn và ví dụ Android Space
- Hướng dẫn và ví dụ Android Toast
- Tạo một Android Toast tùy biến
- Hướng dẫn và ví dụ Android SnackBar
- Hướng dẫn và ví dụ Android TextView
- Hướng dẫn và ví dụ Android TextClock
- Hướng dẫn và ví dụ Android EditText
- Hướng dẫn và ví dụ Android TextWatcher
- Định dạng số thẻ tín dụng với Android TextWatcher
- Hướng dẫn và ví dụ Android Clipboard
- Tạo một File Chooser đơn giản trong Android
- Hướng dẫn và ví dụ Android AutoCompleteTextView và MultiAutoCompleteTextView
- Hướng dẫn và ví dụ Android ImageView
- Hướng dẫn và ví dụ Android ImageSwitcher
- Hướng dẫn và ví dụ Android ScrollView và HorizontalScrollView
- Hướng dẫn và ví dụ Android WebView
- Hướng dẫn và ví dụ Android SeekBar
- Hướng dẫn và ví dụ Android Dialog
- Hướng dẫn và ví dụ Android AlertDialog
- Hướng dẫn và ví dụ Android RatingBar
- Hướng dẫn và ví dụ Android ProgressBar
- Hướng dẫn và ví dụ Android Spinner
- Hướng dẫn và ví dụ Android Button
- Hướng dẫn và ví dụ Android Switch
- Hướng dẫn và ví dụ Android ImageButton
- Hướng dẫn và ví dụ Android FloatingActionButton
- Hướng dẫn và ví dụ Android CheckBox
- Hướng dẫn và ví dụ Android RadioGroup và RadioButton
- Hướng dẫn và ví dụ Android Chip và ChipGroup
- Sử dụng các tài sản ảnh và biểu tượng của Android Studio
- Thiết lập SD Card cho Android Emulator
- Ví dụ với ChipGroup và các Chip Entry
- Làm sao thêm thư viện bên ngoài vào dự án Android trong Android Studio?
- Làm sao loại bỏ các quyền đã cho phép trên ứng dụng Android
- Làm sao loại bỏ các ứng dụng ra khỏi Android Emulator?
- Hướng dẫn và ví dụ Android LinearLayout
- Hướng dẫn và ví dụ Android TableLayout
- Hướng dẫn và ví dụ Android FrameLayout
- Hướng dẫn và ví dụ Android QuickContactBadge
- Hướng dẫn và ví dụ Android StackView
- Hướng dẫn và ví dụ Android Camera
- Hướng dẫn và ví dụ Android MediaPlayer
- Hướng dẫn và ví dụ Android VideoView
- Phát hiệu ứng âm thanh trong Android với SoundPool
- Hướng dẫn lập trình mạng trong Android - Android Networking
- Hướng dẫn xử lý JSON trong Android
- Lưu trữ dữ liệu trên thiết bị với Android SharedPreferences
- Hướng dẫn lập trình Android với bộ lưu trữ trong (Internal Storage)
- Hướng dẫn lập trình Android với bộ lưu trữ ngoài (External Storage)
- Hướng dẫn sử dụng Intent trong Android
- Ví dụ về một Android Intent tường minh, gọi một Intent khác
- Ví dụ về Android Intent không tường minh, mở một URL, gửi một email
- Hướng dẫn sử dụng Service trong Android
- Hướng dẫn sử dụng thông báo trong Android - Android Notification
- Hướng dẫn và ví dụ Android DatePicker
- Hướng dẫn và ví dụ Android TimePicker
- Hướng dẫn và ví dụ Android Chronometer
- Hướng dẫn và ví dụ Android OptionMenu
- Hướng dẫn và ví dụ Android ContextMenu
- Hướng dẫn và ví dụ Android PopupMenu
- Hướng dẫn và ví dụ Android Fragment
- Hướng dẫn và ví dụ Android ListView
- Android ListView với Checkbox sử dụng ArrayAdapter
- Hướng dẫn và ví dụ Android GridView
- Các hướng dẫn lập trình Flutter
Các bài viết mới nhất
- Dart Stream Single và Broadcast
- Xử lý lỗi trong Dart Stream
- Hướng dẫn và ví dụ Dart Stream
- So sánh đối tượng trong Dart với thư viện Equatable
- Flutter BloC cho người mới bắt đầu
- Xử lý lỗi 404 trong Flutter GetX
- Ví dụ đăng nhập và đăng xuất với Flutter Getx
- Hướng dẫn và ví dụ Flutter NumberTextInputFormatter
- Hướng dẫn và ví dụ Flutter multi_dropdown
- Hướng dẫn và ví dụ Flutter flutter_form_builder
- Hướng dẫn và ví dụ Flutter GetX obs Obx
- Hướng dẫn và ví dụ Flutter GetX GetBuilder
- Từ khoá part và part of trong Dart
- Hướng dẫn và ví dụ Flutter InkWell
- Hướng dẫn và ví dụ Flutter Radio
- Bài thực hành Flutter SharedPreferences
- Hướng dẫn và ví dụ Flutter Slider
- Hướng dẫn và ví dụ Flutter SkeletonLoader
- Chỉ định cổng cố định cho Flutter Web trên Android Studio
- Tạo Module trong Flutter
- Các hướng dẫn lập trình Android
Từ khóa » Code Lưu Trữ Dữ Liệu Trong Android
-
Bài 17: Lưu Trữ Dữ Liệu Trong Android - Lập Trình Android Cơ Bản
-
Tổng Quan Về Lưu Trữ Dữ Liệu Và Tệp | Android Developers
-
Android Từ đầu: Cách Lưu Trữ Dữ Liệu ứng Dụng Tại Cục Bộ - Code
-
Lưu Trữ Dữ Liệu Với SharedPreferences | How Kteam
-
Hướng Dẫn Lập Trình Android Với Bộ Lưu Trữ Trong (Internal Storage)
-
Android – Lưu Trữ Dữ Liệu Trên File - Phở Code
-
Lập Trình Android Với Bộ Nhớ Trong (Internal Storage) - Viblo
-
Cơ Sở Dữ Liệu Trong Android - Viblo
-
Học Android: Lưu Trữ Dữ Liệu Với SharedPreferences - YouTube
-
Đọc Ghi Dữ Liệu Với Bộ Nhớ Trong Internal Storage Trong Android
-
Lưu Trữ Dữ Liệu Trong Android (Bài 5) - Gia Sư Tin Học
-
Lập Trình Android - Lưu Tập Tin ở Bộ Nhớ Ngoài
-
Sử Dụng SQLite Trong Android (phần 1)