这几天在做的项目网盘。上传时需要用到调用系统自带的文件管理器来选择文件,后来就在考虑怎么调用,网上也搜了很久,没有很好的解决方法,后来在一瞬间发现了一篇不错的文章,借鉴了一下代码。
- /** 调用文件选择软件来选择文件 **/
- private void showFileChooser() {
- intent = new Intent(Intent.ACTION_GET_CONTENT);
- intent.setType("*/*");
- intent.addCategory(Intent.CATEGORY_OPENABLE);
- try {
- startActivityForResult(Intent.createChooser(intent, "请选择一个要上传的文件"),
- FILE_SELECT_CODE);
- } catch (android.content.ActivityNotFoundException ex) {
- // Potentially direct the user to the Market with a Dialog
- Toast.makeText(getActivity(), "请安装文件管理器", Toast.LENGTH_SHORT)
- .show();
- }
- }
在catch,我们可以做更多的操作,比如会跳转到一个下载文件管理器的页面或者等等。
对于返回的数据怎么处理呢。我项目中的上传是如下接收
- /** 根据返回选择的文件,来进行上传操作 **/
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- // TODO Auto-generated method stub
- if (resultCode == Activity.RESULT_OK) {
- // Get the Uri of the selected file
- Uri uri = data.getData();
- String url;
- try {
- url = FFileUtils.getPath(getActivity(), uri);
- Log.i("ht", "url" + url);
- String fileName = url.substring(url.lastIndexOf("/") + 1);
- intent = new Intent(getActivity(), UploadServices.class);
- intent.putExtra("fileName", fileName);
- intent.putExtra("url", url);
- intent.putExtra("type ", "");
- intent.putExtra("fuid", "");
- intent.putExtra("type", "");
- getActivity().startService(intent);
- } catch (URISyntaxException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- super.onActivityResult(requestCode, resultCode, data);
- }
---------------------------------------------------------
- private static final int FILE_SELECT_CODE = 0;
- private static final String TAG = "VideoActivity";
- private void chooseFile() {
- Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
- intent.setType("*/*");
- intent.addCategory(Intent.CATEGORY_OPENABLE);
- try {
- startActivityForResult(Intent.createChooser(intent, "选择文件"), FILE_SELECT_CODE);
- } catch (android.content.ActivityNotFoundException ex) {
- Toast.makeText(this, "亲,木有文件管理器啊-_-!!", Toast.LENGTH_SHORT).show();
- }
- }
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- // TODO Auto-generated method stub
- if (resultCode != Activity.RESULT_OK) {
- Log.e(TAG, "onActivityResult() error, resultCode: " + resultCode);
- super.onActivityResult(requestCode, resultCode, data);
- return;
- }
- if (requestCode == FILE_SELECT_CODE) {
- Uri uri = data.getData();
- Log.i(TAG, "------->" + uri.getPath());
- }
- super.onActivityResult(requestCode, resultCode, data);
- }