通过意图复制多个文件的工作方式与预期不符

时间:2014-06-10 13:34:23

标签: android file android-intent copy share

这是我在这里发布的第一个问题, 到目前为止我能找到的所有答案都没有询问并感谢你们,但是我只是想不出来就不知道......

到目前为止,我的项目是一个简单的应用程序,它将复制通过意图(从任何照片库)发送到它的所选图像到我的SD卡上的指定文件夹。

实际上,只有当我把它放在行动中时才会出现多个文件出现问题:

 public void onDestroy() {
        super.onDestroy();
        android.os.Process.killProcess(android.os.Process.myPid());
        finish();

    }

当我在此末尾没有调用该函数时:

if(receivedAction.equals(Intent.ACTION_SEND_MULTIPLE)){
        //this is used when MULTIPLE files are sent at once
        if(receivedType.startsWith("image/")){
            //if files are images
            ArrayList<Parcelable> list = receivedIntent.getParcelableArrayListExtra(Intent.EXTRA_STREAM); 
            int n = 0;
            String textToPrint = ""; //debug for now
            for (Parcelable p : list) { 
                //here we get URI for each file
                Uri receivedUri = (Uri) p; 
                if (receivedUri != null) {
                    //Copy the picture
                    try {
                        selectedImagePath = getPath(receivedUri);
                        fname = Integer.toString(random+n);
                        if (n >= 0){
                            copyFile(selectedImagePath, targetPath + "/" + fname + ".jpg");
                            textToPrint = textToPrint + fname + ".jpg\n";
                        }
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                        fname = Integer.toString(random+n);
                        txtView.setText("didn't copy :(\n" + selectedImagePath + "\n" + targetPath + "/" + fname + ".jpg");
                   }
                }
                n++;
            }
            txtView.setText(textToPrint); //just for debug right now
            onDestroy(); //kills the app when loop is done
        }
    } 

你可以看到onDestroy();在这里结束。它仍将复制图像,唯一的问题是添加的图像被复制有错误,所以例如我选择5个图像,如果我不使用onDestroy()我将在操作后的所选文件夹中有5个图像。

如果我最后把它放在那个文件夹中,我将再次有5个图像,唯一的区别是一个或两个图像将被复制,一些将被跳过。 :(

我对此失去了理智,无法弄清楚如何解决这个问题。我总是可以在没有onDestroy()的情况下离开它,但这不是重点,这个应用程序应该只复制这些东西并自行关闭。

非常感谢您的回答:)

0 个答案:

没有答案