如何将文件数组作为Intent结果传递

时间:2014-03-29 05:20:29

标签: android file sockets android-intent arraylist

我试图从另一个活动接收包含所选文件路径的ArrayList<String>。在接收活动时,我使用这些文件路径构建可以通过标准Java套接字传输的文件对象。成功接收文件路径(一个对话框正确显示所有选定的路径),但我无法在MainActivity中创建文件对象(或者至少这是我的想法。套接字连接得到时间出)。硬编码文件路径工作正常(这些文件通过Java套接字成功传输)。有什么建议吗?这是我到目前为止所做的:

MainActivity代码段:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent launchFileManager = new Intent(getBaseContext(),
                FileChooserActivity.class);
        startActivityForResult(launchFileManager, REQUEST_CODE); //receives files
        //fileArray has been populated with selected files

        Thread trd = new Thread(new Runnable() {
            @Override
            public void run() {
                initializeServer();
                if (!fileArray.isEmpty()) {
                    for (int i = 0; i < 5; i++)
                        copyFile(fileArray.get(i), fileArray.get(i).getName());
                }
            }
        });
        trd.start();

        Button btn=(Button)findViewById(R.id.dispFilesid);
        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Dialog dialog=new Dialog(MainActivity.this);
                dialog.setContentView(R.layout.mydialog);
                ListView mlv=(ListView)dialog.findViewById(R.id.dialoglistviewid);
                ArrayAdapter<String> daa=new ArrayAdapter<String>(MainActivity.this,
                        android.R.layout.simple_list_item_1, filepathNameArray);
                mlv.setAdapter(daa);
                dialog.show();
            }
        });
    }

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_CODE) {
            if (resultCode == RESULT_OK) {
                filepathNameArray = data.getExtras().getStringArrayList("key");// file URI received
                for(int f=0;f<filepathNameArray.size();f++){
                    String buildPath=filepathNameArray.get(f);
                    buildPath=buildPath.replace("/storage/sdcard0", "");
                    File tempFile=new File(Environment.getExternalStorageDirectory(), buildPath);
                    fileArray.add(tempFile); //create file array
                }
            }
            if (resultCode == RESULT_CANCELED) {
                Toast cancelToast = Toast.makeText(getBaseContext(),
                        "Nothing selected", Toast.LENGTH_SHORT);
                cancelToast.show();
            }
        }
    }

EDIT1:硬编码文件路径:

final File file1=new File(Environment.getExternalStorageDirectory(),"/airdrive/Xperia.pdf");
    final File file2=new File(Environment.getExternalStorageDirectory(),"/airdrive/Expedition.pdf");
    final File file3=new File(Environment.getExternalStorageDirectory(),"/airdrive/Conspiracy.pdf");
    final File file4=new File(Environment.getExternalStorageDirectory(),"/airdrive/Robinson.pdf");
    final File file5=new File(Environment.getExternalStorageDirectory(),"/airdrive/Sphere.pdf");

    fileArray.add(file1);
    fileArray.add(file2);
    fileArray.add(file3);
    fileArray.add(file4);
    fileArray.add(file5);

Filepath收到的字符串SecondActivity的格式:

"/storage/sdcard0/Videos/myvid1.mp4"
"/storage/sdcard0/Videos/myvid2.mp4"
"/storage/sdcard0/Videos/myvid3.mp4"
"/storage/sdcard0/Videos/myvid4.mp4"

0 个答案:

没有答案