Я проверил образец кода, чтобы сделать ваше приложение стандартным sms-клиентом (found here), и образец проекта отлично работает на моем Nexus 4, работающем 4.4. Существует кнопка, которая при нажатии, она делает следующее:Android 4.4 SMS API - Невозможно изменить стандартное SMS-приложение в таблетках
Intent intent = new Intent(Intents.ACTION_CHANGE_DEFAULT);
intent.putExtra(Intents.EXTRA_PACKAGE_NAME, context.getPackageName());
context.startActivity(intent);
и что делает «изменение смс приложение» диалог появится, что позволяет пользователю переключаться их смс по умолчанию приложения.
Когда я запускаю тот же проект на своем Nexus 7 (2012, Wifi), кнопка ничего не делает, хотя я могу читать в Logcat, что намерение начинается. То же самое происходит с моделью Nexus 7 2013, которую я проверил.
Я попытался загрузить с сайта какое-то приложение с sms, и то же самое происходит во всех них. Они отлично работают в моем N4, не повезло в моем N7.
Любой, кто сталкивается с той же проблемой? Удалили ли они возможность писать сообщения на устройства, которые не могут отправлять тексты в целом?
Edit: Просто заметил, что документация Telephony пишет:
Примечания: Этот API не доступен на всех Android устройств с питанием. Если ваше приложение зависит от функций телефонии, например, для управления SMS-сообщениями, включите элемент в манифест, который объявит аппаратную функцию «android.hardware.telephony». Кроме того, вы можете проверить доступность телефонии во время выполнения, используя hasSystemFeature (PackageManager.FEATURE_TELEPHONY) или getPhoneType().
Итак, я предполагаю, что если устройство не имеет вышеуказанной функции, оно не может «управлять SMS-сообщениями» (быть стандартным SMS-приложением).
Поскольку эти Nexus 7 не могут отправлять SMS, если они только WiFi, я не совсем уверен, что вы ожидаете. – CommonsWare
Мне было интересно, если вы вообще не можете отправлять сообщения, вы все равно можете использовать Content Provider и писать сообщения на устройстве. –
Я не уверен, что провайдер существует; Я не искал его на устройстве WiFi.Вы можете запустить тест, чтобы узнать, можете ли вы его прочитать, используя «ContentResolver» или «Loader». Если это не удается с какой-то ошибкой, не найденной провайдером, то у устройства нет этого провайдера. Если это удастся, однако, я не совсем уверен, что происходит, как если бы оно было документировано и существует, вы должны иметь возможность запросить, чтобы иметь возможность писать на него. – CommonsWare