91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

怎樣在Android中使用FileChooser

小樊
87
2024-09-15 22:45:23
欄目: 編程語言

在 Android 中,使用 FileChooser 可以讓用戶從設備中選擇文件

  1. 首先,需要在 AndroidManifest.xml 文件中添加讀取外部存儲的權限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  1. 然后,在你的 Activity 或 Fragment 中創建一個方法來啟動 FileChooser。例如:
private static final int FILE_PICK_REQUEST_CODE = 1;

private void openFileChooser() {
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("*/*");
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);

    try {
        startActivityForResult(
                Intent.createChooser(intent, "選擇文件"),
                FILE_PICK_REQUEST_CODE);
    } catch (android.content.ActivityNotFoundException ex) {
        Toast.makeText(this, "請安裝文件管理器", Toast.LENGTH_SHORT).show();
    }
}
  1. 接下來,重寫 onActivityResult 方法以處理 FileChooser 返回的結果:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == FILE_PICK_REQUEST_CODE && resultCode == RESULT_OK && data != null) {
        Uri uri = data.getData();
        if (uri != null) {
            // 在這里處理所選文件的 Uri,例如獲取文件名和讀取內容等
            String fileName = getFileNameFromUri(this, uri);
            // ...
        }
    }
}
  1. 實現 getFileNameFromUri 方法,用于從 Uri 中獲取文件名:
public String getFileNameFromUri(Context context, Uri uri) {
    String fileName = "";
    if (uri.getScheme().equalsIgnoreCase("content")) {
        Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
        try {
            if (cursor != null && cursor.moveToFirst()) {
                fileName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
            }
        } finally {
            cursor.close();
        }
    }
    if (fileName.isEmpty()) {
        fileName = uri.getPath();
        int cut = fileName.lastIndexOf('/');
        if (cut != -1) {
            fileName = fileName.substring(cut + 1);
        }
    }
    return fileName;
}
  1. 最后,當用戶需要選擇文件時,調用 openFileChooser() 方法即可。

注意:在 Android 10 及更高版本中,外部存儲機制發生了變化。為了訪問外部存儲,需要在運行時請求分區存儲權限。具體信息可參考 官方文檔

0
平阳县| 双城市| 六枝特区| 安义县| 榆林市| 临夏县| 汤原县| 红安县| 砀山县| 新巴尔虎左旗| 永和县| 富平县| 中山市| 安新县| 扶绥县| 丹东市| 慈利县| 布尔津县| 桂平市| 内丘县| 泗水县| 道孚县| 岳普湖县| 蓝山县| 临澧县| 麻栗坡县| 平陆县| 上饶市| 阿图什市| 伊宁县| 双江| 镶黄旗| 朔州市| 且末县| 平昌县| 岑溪市| 平湖市| 盘锦市| 剑阁县| 铜梁县| 华蓥市|