• (转)Android调用系统自带的文件管理器进行文件选择并获得路径


    Android区别于iOS的沙盒模式,可以通过文件浏览器浏览本地的存储器。Android API也提供了相应的接口。

    基本思路,先通过Android API调用系统自带的文件浏览器选取文件获得URI,然后将URI转换成file,从而得到file。

    调用系统自带的文件浏览器

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button btn= (Button) findViewById(R.id.btn);
            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                    intent.setType("*/*");//设置类型,我这里是任意类型,任意后缀的可以这样写。
                    intent.addCategory(Intent.CATEGORY_OPENABLE);
                    startActivityForResult(intent,1);
                }
            });
        }
    }
     intent.setType(“image/*”);
    //intent.setType(“audio/*”); //选择音频
    //intent.setType(“video/*”); //选择视频 (mp4 3gp 是android支持的视频格式)
    //intent.setType(“video/*;image/*”);//同时选择视频和图片

    回调

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == Activity.RESULT_OK) {//是否选择,没选择就不会继续
            Uri uri = data.getData();//得到uri,后面就是将uri转化成file的过程。
            String[] proj = {MediaStore.Images.Media.DATA};
            Cursor actualimagecursor = managedQuery(uri, proj, null, null, null);
            int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            actualimagecursor.moveToFirst();
            String img_path = actualimagecursor.getString(actual_image_column_index);
            File file = new File(img_path);
            Toast.makeText(MainActivity.this, file.toString(), Toast.LENGTH_SHORT).show();
        }
    }

    onActivityResult函数响应了选择文件的操作。

     转载来至:http://www.banbaise.com/archives/614

  • 相关阅读:
    Liunx用户运行模式
    指令——ps -ef
    文本编辑器vim/vi——末行模式
    文本编辑器vim/vi——模式切换及输入模式
    pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
    Python的numpy库中rand(),randn(),randint(),random_integers()的使用
    python常见面试题
    读取gzmt.csv文件,计算均值及概率
    NumPy数组对象
    写一个带文本菜单的程序,菜单项如下 (1) 取五个数的和 (2) 取五个数的平均值 (X) 退出。
  • 原文地址:https://www.cnblogs.com/banbaise/p/4998661.html
Copyright © 2020-2023  润新知