Невозможно заблокировать файл между двумя приложениями в android - PullRequest
0 голосов
/ 18 марта 2020

У меня есть два android приложения. Одно приложение создает текстовый файл, который должен быть заблокирован. Другое приложение проверяет «canWrite ()», но оно всегда возвращает true:

Первое приложение:

 File gpxfile = new File(Environment.getExternalStorageDirectory().getAbsoluteFile().toString() + "/WMSCache/lockWMS.txt");
            if (!gpxfile.exists()) {
                gpxfile.mkdirs();
                gpxfile.createNewFile();
            }
            FileInputStream fis = new FileInputStream(gpxfile);
            FileChannel toChannel = new FileOutputStream(gpxfile).getChannel();
            if (toChannel != null) {
                toChannel.lock();                    
            }

Второе приложение (проверяет таймер, каждые 1000 мс):

 final File f = new File(Environment.getExternalStorageDirectory().getAbsoluteFile().toString() + "/WMSCache/lockWMS.txt");
    Timer asyncMessageTimer = new Timer();
    asyncMessageTimer.schedule(new TimerTask()
    {
        @Override
        public void run()  {              
                if (f.canWrite()) {
                    Log.d("canWrite", "NOT LOCKED"); //here ALWAYS true
                }
                else {
                    Log.d("canWrite", "LOCKED");
                }
        }
    }, 1000, 1000);

Согласно каждому учебнику / решению это должно работать, но это не так. Что я делаю не так?

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