(轉)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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM