невозможно установить исполняемый файл для файлов в приложении c хранилище в Android - PullRequest
0 голосов
/ 22 марта 2020

У меня есть кросс-скомпилированный бинарный файл для Android, и я хочу запустить его с runtime.exec

Но после его загрузки в приложение указывается c хранилище (в мой случай storage/emulated/0/Android/data/com.example.sampleApp/files/binary/sample) Я не могу установить для него разрешение с помощью setExecutabe, что делает невозможным его запуск.

Также adb shell chomd +x storage/emulated/0/Android/data/com.example.sampleApp/files/binary/sample также не работает.

В AndroidManifest.xml У меня уже есть объявленное разрешение:

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />

После загрузки file.setExecutable(true) просто возвращает false; и разрешение по-прежнему -rw-rw----. Код моей загрузки, вероятно, связан здесь:

            val request = DownloadManager.Request(uri)
            request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE or DownloadManager.Request.NETWORK_WIFI)
            request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
            request.setMimeType("application/octet-stream")
            request.setTitle("Downloading binary") 
            request.allowScanningByMediaScanner()
            request.setDestinationInExternalFilesDir(
                this,
                null,
                "binary/sample"
            )
            (getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager).euqueue(request)
...