Intent 打开文件浏览器,返回后得到文件路径
2016-05-16 17:49
225 查看
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.demo.gudd.selectmusic.MainActivity"> <Button android:id="@+id/open" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="打开文件"/> <TextView android:id="@+id/showPath" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/open"/> </RelativeLayout>
package com.demo.gudd.selectmusic; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private TextView showPath; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button open = (Button) findViewById(R.id.open); showPath = (TextView) findViewById(R.id.showPath); open.setOnClickListener(this); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1 && resultCode == RESULT_OK) { String mFilePath = Uri.decode(data.getDataString()); //通过data.getDataString()得到的路径如果包含中文路径,则会出现乱码现象,经过Uri.decode()函数进行解码,得到正确的路径。但是此时路径为Uri路径,必须转换为String路径,网上有很多方法,本人通过对比发现,Uri路径里多了file://字符串,所以采用以下方法将前边带的字符串截取掉,获得String路径,可能通用性不够好,下一步会学习更好的方法。 mFilePath = mFilePath.substring(7, mFilePath.length()); showPath.setText(mFilePath); } super.onActivityResult(requestCode, resultCode, data); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.open: // 打开系统文件浏览功能 Intent intent = new Intent(); intent.setAction(Intent.ACTION_GET_CONTENT); intent.setType("*/*"); intent.addCategory(Intent.CATEGORY_OPENABLE); startActivityForResult(intent,1); break; } } }
相关文章推荐
- 347.Top K Frequent Elements
- unity 陀螺仪的脚本
- React Native 实例 - BBC新闻客户端
- Jquery插件实现“点击获取验证码后60秒内禁止重新获取(防刷新)”
- 魅族大数据上云之路
- Cocoapods降低版本及卸载
- winform程序读取和改写配置文件App.config元素的值
- Android中通过scheme实现网页打开App(deep-link)
- 映射文件中主键生成策略的指定
- 正则表达式必须牢记的几个元字符详解(java使用实例)
- 关于新公司所遇到的环境问题的列举
- Android 之优雅代码(一)——巧用assets
- Docker学习二(部署一个可以自由获取环境变量的SpringWeb)
- html中背景图按比例缩放全屏显示
- 终于实现samba可写不可删除
- wamp下Apache2.4.x局域网访问403的解决办法
- Java并发机制深究1-synchronized和volatile
- SpringMVC后台接收list类型的数据的实现方式
- 个人学习-java-集合的遍历
- nginx的配置及模块详解