android呼叫系統檔案瀏覽器獲得uri或者檔案路徑
基本思路:
1.使用隱式intent和startActivityforResult開啟系統檔案瀏覽器。
2.使用onAcitivityRsult方法接受返回的 intent,取出其中包含的uri(注意這不是檔案路徑,但是和檔案路徑可以相互轉化)。
3.下面註釋的就是其中的獲取檔案路徑的程式碼。要注意根據你選擇的檔案型別修改MediaStore.後面的內容。也就是把Image換成音訊或者其他的。只有對應才能正確的解析。
還有一些專門講述二者相互轉的文章。請自行搜尋。
//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();
public class MainActivity extends Activity {
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView(){
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);
}
});
}
@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();
Toast.makeText(MainActivity.this, uri.toString(), Toast.LENGTH_SHORT).show();
}
}
}