Необходимость в дополнительном пространстве для хранения контактов, доступном только для CallerId

Хранилище контактов в Android в значительной степени стандартизировано и унифицировано для всех приложений и доступно в зависимости от уровня разрешений.

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

Но полное их удаление затрудняет их идентификацию во время входящего вызова.

Итак, я хочу иметь способ сохранять контакты, к которым можно было бы избежать доступа всеми приложениями, но я должен иметь возможность идентифицировать их при входящем звонке.

Как это может быть сделано? Любое приложение или сохранение в файле csv... Любое предложение, пожалуйста?

Обратите внимание, что любые облачные приложения для идентификации вызывающего абонента — это не тот вариант, который мне нужен. Я хочу сделать это только для контактов, которые я знаю и сохранил.

Боюсь, нет возможности для выборочного доступа к контактам. Даже если вы храните их в отдельных «разделах», их всегда поддерживает «поставщик контактов». Таким образом, вы можете либо запретить, либо разрешить приложению доступ ко всем контактам. Хотя может быть телефонное приложение с собственным хранилищем контактов, доступным только ему (технически выполнимо наверняка), я не помню, чтобы видел такое. Но не стесняйтесь перепроверить мой список .
@Izzy, насколько сложно будет написать приложение для новичка со знанием только C? Или есть другой способ, как это можно сделать самостоятельно? У меня они хранятся в файле excel. Я только застрял с поиском и найти часть. Захват номера телефона из входящего и последующее отображение его в виде всплывающего окна может быть выполнено с помощью Automate .
Yaksha, я не Android-программист, поэтому не могу сказать. Если это только для CallerID (что было неясно до сих пор), это не должно быть слишком сложно — но вопросы разработки здесь не по теме. Говоря об Automate, возможно, кто-то уже написал соответствующий рецепт.
@Izzy, я смог заставить его работать в самой Automate. Спасибо :)
Спасибо за ответ (проголосовал)! Надеюсь, мое редактирование вас устраивает :) Тогда я немного почищу здесь комментарии.

Ответы (2)

Я придумал решение для этого сам. Вместо того, чтобы писать полное приложение для Android, я обнаружил, что Automate имеет функциональные блоки SQLite. Поэтому я просто написал поток для выполнения этого, и его можно найти по адресу

http://llamalab.com/automate/community/flows/17889

Предварительный просмотр этого потока:

предварительный просмотр потока
Предварительный просмотр этого потока (нажмите, чтобы увеличить)

Вы можете хранить контакты в формате .csv, без проблем преобразовав файл резервной копии контактов по умолчанию в формате .vcf или используя такие приложения, как контакты, в Excel. Но вы знаете, что контакты — это объекты, которые нуждаются в быстрой обработке, они буферизуются из раздела /cache. Просто потому, что это более быстрая память, чем EMMC, FAT, exFAT и т. д. Все приложения читают их оттуда. Не существует алгоритма, который когда-либо будет читать контакты из вашего раздела /sdcard, где, я уверен, будет существовать ваш файл .csv. Приложение «Контакты» только просматривает контакты. Точно так же, как им предоставляются другие приложения. Одно приложение под названием «Поставщик контактов» отвечает за обслуживание потока контактов из /cache. Поскольку это системное приложение, оно имеет ссылки на приложения и разрешения для всей системы. Если вы не сделаете его пользовательским приложением, извлекая его, его библиотеки и классы и перекомпилировать его в пользовательское приложение и установить ссылки приложений на приложения, которые вы авторизуете, но все равно это будет похоже на отказ в контактном доступе к другим приложениям. Так что это невозможно.

Я вижу, ты думаешь. Это будет работать. Для извлечения базы данных контактов потребуется приложение автоматизации, которое также интегрирует язык запросов. Да, Macrodroid — это одно из приложений, которое можно автоматизировать и которым я могу пользоваться профессионально. Но у него нет языка запросов. Возможно, если вы получите приложение, которое может выполнять поиск в CSV и отображать имя человека, Macrodroid может помочь вам немедленно получить его во всплывающем окне при вызове. Но если вы понимаете приложение Tasker, это современное тяжелое приложение для автоматизации один на один, которое, я думаю, может вам помочь. Но я не очень понимаю
Определенно. Потому что, если вы не собираетесь использовать язык запросов, вы определенно пытаетесь создать имена контактов как переменные и их номера как их значения. При вызове, сообщающем значение, отображается имя переменной. Это будет слишком дорого, чтобы использовать приложение автоматизации. Но разработать приложение не так уж и плохо. Если ты так серьезно этого хочешь. Вот где я хотел бы, чтобы Android был Windows Computer, Excel и BASIC могли бы быть забавными.