这是我在这里发布的第一个问题, 到目前为止我能找到的所有答案都没有询问并感谢你们,但是我只是想不出来就不知道......
到目前为止,我的项目是一个简单的应用程序,它将复制通过意图(从任何照片库)发送到它的所选图像到我的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()的情况下离开它,但这不是重点,这个应用程序应该只复制这些东西并自行关闭。
非常感谢您的回答:)