2-й файл удаляется при пакетном переименовании

#android #kotlin #file-io

#Android #kotlin #file-io

Вопрос:

Я создаю пакетное переименование, и у меня есть функция для переименования, которую я вызываю в цикле for. когда я выбираю два файла, 2-й файл удаляется, а 1-й переименовывается (если я выбираю только 1 файл, он переименовывается правильно), я не пробовал выбирать более 2 файлов, переименование выполняется службой, также правильно ли вызывать onDestroy внутри onStartCommand? я сделал это, потому что служба не останавливалась после переименования

 override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
        val bundle: Bundle?=intent.extras
        val pathss = bundle!!.getStringArray("path")
        val namess = bundle!!.getStringArray("newname")
        val resultt:MutableList<String> = mutableListOf()
        val notifID = 595
        val maxProgress = pathss.size
        var currentProgress = 1

        val inten = Intent(this, HobbiesActivity::class.java)
        inten.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK

        val pendingIntent : PendingIntent = PendingIntent.getActivity(this,0,inten, 0)

        val builderr = NotificationCompat.Builder(this, "Renamer")
                .setSmallIcon(R.drawable.ic_stat_name)
                .setContentTitle("Renaming "   pathss.size.toString()   " files")
                .setPriority(NotificationCompat.PRIORITY_HIGH)
                .setVisibility(1)

        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            val name = "ChannelMain"
            val descText = "Renaming Progress"
            val imp = NotificationManager.IMPORTANCE_HIGH
            val channel = NotificationChannel("Renamer", name, imp).apply {
                description = descText
                enableVibration(true)
            }
            val notificationManager: NotificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
            notificationManager.createNotificationChannel(channel)
        }
        Toast.makeText(this,"Renaming",Toast.LENGTH_SHORT).show()
        startForeground(notifID,builderr.build())

        with(NotificationManagerCompat.from(this)){
            builderr.setProgress(maxProgress, currentProgress, false)
            notify(notifID, builderr.build())

            for(i in 0 until pathss.size)
            {
                if(renameTarget(pathss[i],namess[i])!=0)
                {
                    resultt.add("Failed")
                }
                else
                {
                    resultt.add("Success")
                }
                currentProgress = i 1
                builderr.setContentTitle("Renaming "   currentProgress.toString()   " of "   pathss.size.toString())
                builderr.setProgress(maxProgress,currentProgress,false)
                notify(notifID,builderr.build())
            }

            stopForeground(true)
            builderr.setContentTitle("Rename Complete")
                    .setContentText("Renamed "   maxProgress.toString()   " files")
                    .setProgress(0,0,false)
                    .setPriority(NotificationCompat.PRIORITY_HIGH)
                    .setSmallIcon(R.drawable.ic_stat_name)
                    .setContentIntent(pendingIntent)
                    .setAutoCancel(true)
            notify(notifID,builderr.build())
        }
        onDestroy()
        return Service.START_STICKY
    }

    override fun onDestroy() {
        super.onDestroy()
        Toast.makeText(this,"Renaming completed",Toast.LENGTH_SHORT).show()
        stopSelf()
    }

}
  

Функция переименования

 fun renameTarget(filePath:String, newName:String):Int{
    val src= File(filePath)
    var ext=""
    val dest: File
    if(src.isFile)
    {
        ext=filePath.substring(filePath.lastIndexOf("."),filePath.length)
    }
    if(newName.isEmpty())
    {
        return -1
    }
    val temp=filePath.substring(0,filePath.lastIndexOf("/"))
    dest= File("$temp/$newName$ext")
    return if(src.renameTo(dest)) {
        0
    } else {
        1
    }
}