在Android上通过Intent选择任何类型的文件

我想为可以返回任何文件的应用程序启动一个Intentchooser


目前,我使用(从Android电子邮件源代码复制的文件附件)


Intent intent = new Intent(Intent.ACTION_GET_CONTENT);

intent.addCategory(Intent.CATEGORY_OPENABLE);

intent.setType("*/*");

Intent i = Intent.createChooser(intent, "File");

startActivityForResult(i, CHOOSE_FILE_REQUESTCODE);

但是它仅在我的Galaxy S2上显示“图库”和“音乐播放器”。该设备上有一个文件浏览器,我希望它出现在列表中。我还希望照相机应用程序显示在列表中,以便用户可以拍摄照片并通过我的应用程序发送。如果我安装了Astro文件管理器,它也会响应该意图。我的客户仅是Galaxy SII所有者,鉴于他们已经具有基本但足够的文件管理器,因此我不想强迫他们安装Astro文件管理器。


关于如何实现此目标的任何想法吗?我敢肯定,我已经看到默认的文件管理器出现在这样的菜单中以选择文件,但是我不记得是哪个应用程序了。


慕少森
浏览 1426回答 3
3回答

慕尼黑8549860

不是用于相机,而是用于其他文件。在我的设备中,我已经ES File Explorer安装好了,这对我来说很简单。Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.setType("file/*");startActivityForResult(intent, PICKFILE_REQUEST_CODE);

紫衣仙女

三星文件浏览器不仅需要自定义操作(com.sec.android.app.myfiles.PICK_DATA),而且部分类(意向。CATEGORY_DEFAULT)和MIME类型应该额外进行传递。Intent intent = new Intent("com.sec.android.app.myfiles.PICK_DATA");intent.putExtra("CONTENT_TYPE", "*/*");intent.addCategory(Intent.CATEGORY_DEFAULT);您也可以使用此操作来打开多个文件:com.sec.android.app.myfiles.PICK_DATA_MULTIPLE无论如何,这是我的解决方案,可在Samsung和其他设备上使用:public void openFile(String mimeType) {        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);        intent.setType(mimeType);        intent.addCategory(Intent.CATEGORY_OPENABLE);        // special intent for Samsung file manager        Intent sIntent = new Intent("com.sec.android.app.myfiles.PICK_DATA");         // if you want any file type, you can skip next line         sIntent.putExtra("CONTENT_TYPE", mimeType);         sIntent.addCategory(Intent.CATEGORY_DEFAULT);        Intent chooserIntent;        if (getPackageManager().resolveActivity(sIntent, 0) != null){            // it is device with Samsung file manager            chooserIntent = Intent.createChooser(sIntent, "Open file");            chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] { intent});        } else {            chooserIntent = Intent.createChooser(intent, "Open file");        }        try {            startActivityForResult(chooserIntent, CHOOSE_FILE_REQUESTCODE);        } catch (android.content.ActivityNotFoundException ex) {            Toast.makeText(getApplicationContext(), "No suitable File Manager was found.", Toast.LENGTH_SHORT).show();        }    }该解决方案对我来说效果很好,也许对其他人也很有用。

拉丁的传说

在银河上为我完成的这项工作请注意其显示联系人,设备上安装的文件管理器,图库,音乐播放器private void openFile(Int  CODE) {    Intent i = new Intent(Intent.ACTION_GET_CONTENT);    i.setType("*/*");    startActivityForResult(intent, CODE);}在这里获取onActivityResult活动的路径。protected void onActivityResult(int requestCode, int resultCode, Intent data) {     String Fpath = data.getDataString();    // do somthing...    super.onActivityResult(requestCode, resultCode, data);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android