有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android:打开文件浏览器以获取文件路径

我一直在试图找到一种方法,让我的应用程序打开一个文件浏览器,用户可以在其中选择一个视频文件,并将我的应用程序存储到一个字符串中以供以后使用。是否有我可以使用的意图或功能?有什么建议吗


共 (3) 个答案

  1. # 1 楼答案

    使用下面的代码

    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
             intent.setType("file/*");
       startActivityForResult(intent,PICKFILE_RESULT_CODE);
    

    在“活动结果”中,您可以获得文件路径

     @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    switch(requestCode){
    case PICKFILE_RESULT_CODE:
    if(resultCode==RESULT_OK){
    String FilePath = data.getData().getPath();
    textFile.setText(FilePath);
    }
    break;
    
    }
    }
    
  2. # 2 楼答案

    您可以通过意向选择器来实现。试试这个代码,我认为这个解决方案可以解决你的问题

                        Intent intent = new Intent();
                        intent.addCategory(Intent.CATEGORY_OPENABLE);
                        // Set your required file type  
                        intent.setType("*/*");
                        intent.setAction(Intent.ACTION_GET_CONTENT);
                        startActivityForResult(Intent.createChooser(intent, "DEMO"),1001);
    

    然后是onActivityResult方法

    public void onActivityResult(int requestCode, int resultCode,
                    Intent data) {
                // TODO Auto-generated method stub
                super.onActivityResult(requestCode, resultCode, data);
    
                // super.onActivityResult(requestCode, resultCode, data);
    
                if (requestCode == 1001) {
                    Uri currFileURI = data.getData();
                    String path=currFileURI.getPath();
                }}
    
  3. # 3 楼答案

    下面是我以前的一个项目中使用的代码

    Intent intent = new Intent();
    intent.setType("video/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent,"Select Video "), 33);
    
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            if (requestCode == 33) {
                Uri selectedMediaUri = data.getData();
                filemanagerstring = selectedMediaUri.getPath();
                selectedMediaPath = getPath(selectedMediaUri);
                if (!selectedMediaPath.equals("")) {
                    filePath = selectedMediaPath;
                } else if (!filemanagerstring.equals("")) {
                    filePath = filemanagerstring;
                }
                int lastIndex = filePath.lastIndexOf("/");
                fileName = filePath.substring(lastIndex+1);
                //filepath is your file's path
            }
        }
    }
    public String getPath(Uri uri) {
        String[] projection = { MediaStore.MediaColumns.DATA };
        Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
        if (cursor != null) {
            // HERE YOU WILL GET A NULLPOINTER IF CURSOR IS NULL
            // THIS CAN BE, IF YOU USED OI FILE MANAGER FOR PICKING THE MEDIA
            int column_index = cursor
                    .getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);
            cursor.moveToFirst();
            return cursor.getString(column_index);
        } else
            return "";
    }