У меня проблемы с получением "server", "mms_proxy" и "mms_port". Я не нашел ничего официального от Google о том, почему это так? Я предположил бы, что если я не могу этого сделать, то это будет указано Google.
Веб-сайт разработчика Android показывает класс Telephony.Carriers и все, что доступно, но ничего не говорит об ограничениях любого рода, поэтому на данный момент я считаю справедливым предположить, что могу получить к ним доступ, а не попросить пользователя найти значения APN вручную, которые заставят многих людей мгновенно сдаться и не использовать мое приложение.
Можем ли мы попытаться найти официальный ответ о том, что здесь происходит, я попытался получить эту информацию разными способами, что привело к очень запутанным ошибкам, которые, по-видимому, не могут быть объяснены.
Я использую Android 6.01 на устройстве ZTE Axon 7. Самый низкий api, который разрешает мое приложение, это api_21 и класс Telephony.Carriers, доступный от api_19 и выше.
Я объявил все необходимые разрешения в файле Manifest, и, поскольку я сейчас тестирую sdk "M" (Android 6), я также получил разрешения явно во время выполнения от пользователя.
Это код внутри моей Деятельности, который я запускаю и получаю сообщение об ошибке «Ошибка получения значений Mms Carrier» ... в этом вся проблема и я застрял.
ContentResolver contentResolver = getContentResolver();
int index_ID;
final String[] PROJECT =
{
Telephony.Carriers.TYPE,
Telephony.Carriers.MMSC,
Telephony.Carriers.MMSPROXY,
Telephony.Carriers.MMSPORT,
};
grantMyUriPermission(activity, Telephony.Carriers.CONTENT_URI, Intent.FLAG_GRANT_READ_URI_PERMISSION);
grantMyUriPermission(activity, Telephony.Carriers.CONTENT_URI, Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
Cursor carriers_cursor = SqliteWrapper.query(activity, contentResolver,
Uri.withAppendedPath(Telephony.Carriers.CONTENT_URI, "current"), PROJECT, null, null, null);
if (carriers_cursor != null)
{
/*This crap below isn't needed for this situation but helps avoid ERROR*/
index_ID = carriers_cursor.getColumnIndex(Telephony.Carriers._ID);
//--------------------------------------------------------------------------------------
if (index_ID < 0 || !carriers_cursor.moveToFirst())
{
Log.i(TAG, "Error getting Mms Carrier values");
carriers_cursor.close();
return;
}
//--------------------------------------------------------------------------------------
do
{
//Confirm cursor has value assigned to it
Log.i(TAG, "cursor: "+ carriers_cursor);
//Get the available columns names
for (String item : carriers_cursor.getColumnNames())
{
//Name of each column available with Cursor
Log.i(TAG, "item: " + item);
//Attempt to get String value for each available column
try
{
//Use the name of the column, to get the index, to get the String value
Log.i(TAG, "getString(): " + carriers_cursor.getString(carriers_cursor.getColumnIndex(item)));
}
catch (Exception e)
{
Log.i(TAG, "Exception: " + e);
}
}
}
while (carriers_cursor.moveToNext());
carriers_cursor.close();
}
Выход журнала:
I / SmsReceiveIntentService: запуск grantMyUriPermission ()
I / SmsReceiveIntentService: запуск grantMyUriPermission ()
I / NewConversationActivity: ошибка при получении значений Mms Carrier
И это все! Больше нечем заняться ...?