Я розумію, щоб зробити знімки екрана свого телефону, всі програми знімків екрана вимагають, щоб у мене був вкорінений телефон. Чому це так? Чому ми не можемо мати простий додаток для скріншоту для Android, як у нас для Windows?
Я розумію, щоб зробити знімки екрана свого телефону, всі програми знімків екрана вимагають, щоб у мене був вкорінений телефон. Чому це так? Чому ми не можемо мати простий додаток для скріншоту для Android, як у нас для Windows?
Відповіді:
Відповідь досить проста, це питання дозволу.
Android використовує те, що називається фреймбуфер для відображення відео. Кадр буфер розташований за адресою / dev / graphics / fb0. цей "файл", який в основному є потоком, який записує пристрій, коли відбуваються зміни в інтерфейсі користувача, містить ~ 2 кадри екранного екрану.
Дозволи на файл framebuffer є rw- rw- ---
. Зауважте, що остання "група" має 3 "-" s. Це в основному означає, що якщо ви не owner
(що є коренем), у вас немає дозволу навіть читати з цього файлу.
Якщо б був встановлений системний додаток, який міг би робити знімки екрана, він мав би дозвіл на читання з фреймбуфера. Я вважаю, що Motorola Xoom може робити знімки екрана. У ньому встановлено додаток, встановлене на пристрої, як системний додаток.
Читання фреймбуферу для розробника насправді просте, якщо вони мають доступ до його читання.
r--
. Це може створити ризик для безпеки, якщо будь-яка програма може шпигувати на екрані, але чи не це буде лише один із дозволів ( Цей додаток може контролювати ваш екран ), який ви повинні прийняти перед встановленням? Або це, або Google повинні додати вбудований знімок екрана під час вильоту меню, і ніхто більше не отримує доступ до нього. Останнє мені дуже добре, я маю на увазі, що вони зараз додають попередній перегляд друку до Chrome.
Завдяки безпеці Android, що зосереджується на відокремленні всіх додатків від даних один одного, щоб запобігти крадіжці зловмисних програм або зміни даних у додатках, яким ви довіряєте, вони не можуть дозволити програмі робити знімки екрана інших програм.
Подумайте, скільки ваших додатків здатні робити такі речі, як OCR, щоб перетворити зображення в текст, я можу придумати щонайменше чотири додатки на своєму телефоні, які можуть це зробити. Прекрасним прикладом є назви книг Google Goggles OCRing, а також OCRing, а потім переклад блоків тексту іноземними мовами. Тепер подумайте про те, скільки ваших додатків виставить текст на екран, який ви не хочете бачити ненадійним додатком, у мене на телефоні додаток бази даних паролів із зашифрованою базою даних моїх паролів для різних систем, шкідливий додаток заставки може зачекати поки цей додаток не запущено, сфотографуйте екран із зазначенням даних для входу, а потім OCR і відправте їх. Це також може зробити те ж саме для всього, що у вашому списку контактів, навіть якщо ви не даєте дозволу додатку в базі даних контактів чи історії веб-переглядача, або журнали чату тощо. Це лише один спосіб, який може зловживати доступом до вашого екрана.
Ось чому для того, щоб скріншот був універсальним, він повинен бути в ОС (якій ви вже довіряєте всі свої дані). Ось чому на телефони, які мають вбудовану функцію знімання екрана, додано як частину системи, а не як окремий додаток.
Якщо ви викорінюєте свій телефон і дозволяєте додатку робити знімки екрана, ви фактично говорите про те, що ви невірно довіряєте цьому додатку, щоб мати змогу робити все, що може зробити система, включаючи доступ та втручання в інші додатки та їх дані, і що ви повністю довіряйте їй не зловживати цим доступом Це не те, що Android ніколи не дозволить зробити що-небудь, крім системи / ОС.
Коротка відповідь: Оскільки 1) комп’ютери складні та 2) функціональність екрана насправді не дуже проста (для програміста, а не для користувача).
Іншими словами, зробити знімок екрана потрібно, щоб процес скріншотування підключився досить глибоко у внутрішній частині ОС, трохи поплутався з ними та знову зніміть його. Оскільки Android намагається мати вбудовану модель безпеки (на відміну від "зафіксованої заднім числом", що спостерігається в Windows), роблячи знімки екрана на кілька бар'єрів безпеки. Їх можна обійти, але єдиний на даний момент практичний спосіб (за винятком створення дірок - та потенційних вразливих місць - в ядрі) - це використання всемогутнього кореневого акаунта, який не підпадає під обмеження.