Как программно переместить файл apk из root / data / app / в хранилище / emulated / 0 в Android Studio - PullRequest
0 голосов
/ 21 сентября 2019

Эти файлы будут отображать список установленных приложений на вашем мобильном телефоне, и при нажатии на приложение оно создаст (или apk уже существует) apk для этого приложения в /data/app/. Но я хочу переместить этот файл в /storage / emulated / 0 Я пытался использовать Environment, он показывает ту же ошибку, что и предыдущая!

** В MainActivity.java **

@Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);

        ApplicationInfo app = applist.get(position);
        File apkFile = new File(app.publicSourceDir);
        String dest=Environment.getExternalStorageDirectory()+File.separator+"CodeViewer";
        String file=apkFile.getName();
        String src=Environment.getDataDirectory()+File.separator+"app"+File.separator+file;
        Toast.makeText(MainActivity.this,src+"   -  "+dest,Toast.LENGTH_LONG).show();
        moveFile(src,file,dest);
    }

    private void moveFile(String inputPath, String inputFile, String outputPath) {

        InputStream in = null;
        OutputStream out = null;
        try {

            File dir = new File (outputPath); 
            if (!dir.exists())
            {
                dir.mkdirs();
            }


            in = new FileInputStream(inputPath + inputFile);        
            out = new FileOutputStream(outputPath + inputFile);

            byte[] buffer = new byte[1024];
            int read;
            while ((read = in.read(buffer)) != -1) {
                out.write(buffer, 0, read);
            }
            in.close();
            in = null;


            out.flush();
            out.close();
            out = null;


//          new File(inputPath + inputFile).delete();  


        } 

        catch (FileNotFoundException fnfe1) {
            Log.e("tag", fnfe1.getMessage());
            Toast.makeText(MainActivity.this,"failed",Toast.LENGTH_LONG).show();
        }
        catch (Exception e) {
            Log.e("tag", e.getMessage());
            Toast.makeText(MainActivity.this,"failed",Toast.LENGTH_LONG).show();
        }

    }

Возможно ли это?

1 Ответ

0 голосов
/ 21 сентября 2019

Попробуйте

Runtime.getRuntime().exec("cp " + source + " " + destination);

Чтобы проверить, есть ли у вас разрешения , чтобы скопировать этот файл как пользователь без полномочий root, откройте терминал или оболочку adb и введите эту командувручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...