«Ошибка при получении значений Mms Carrier» при обращении к общедоступному классу Android-телефонии. - PullRequest
0 голосов
/ 30 апреля 2018

У меня проблемы с получением "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

И это все! Больше нечем заняться ...?

...