查询Android Telephony.Carriers公共类时“获取Mms Carrier值时出错”

时间:2018-04-29 23:37:01

标签: android android-contentresolver mms apn

我无法获得"服务器"," mms_proxy"和" mms_port"。我还没有找到任何关于Google为什么这么做的官方消息?我会假设,如果这是我不能做的事情,那将由谷歌说明。

Android开发者网站显示了Telephony.Carriers类以及所有可用的但没有说明任何类型的限制,所以在这一点上我认为可以公平地假设我可以访问这些而不是要求用户查找手动输入APN值会使很多人立即放弃而不使用我的应用程序。

我们是否可以尝试找到关于这里发生的事情的正式答案,我试图以多种方式获取这些信息,这些信息都会导致看似无法解释的非常混乱的错误。

我在设备ZTE Axon 7上运行Android 6.01。我的应用程序允许的最低api是api_21,并且api_19及以上的Telephony.Carriers类可用。

我已在Manifest文件中声明了所有必要的权限,因为我目前正在测试sdk" M" (Android 6),我还在运行时从用户处明确获取了权限。

这是我运行的Activity中的代码,我运行并收到错误声明"错误获取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值时出错

那就是它!没别的了......?

0 个答案:

没有答案