我试图从另一个活动接收包含所选文件路径的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"