android - 从 4.2 开始获取首选 apn 失败

标签 android security proxy

我使用以下代码获取设备的首选 apn:

DefaultHttpClient http = new DefaultHttpClient();
Cursor mCursor = ctx.getContentResolver().query(Uri.parse("content://telephony/carriers/preferapn"), new String[] { "name", "proxy", "port"},null, null, null);

如果设置了代理我修改我的网络请求

if (mCursor != null) {
            try {
                if (mCursor.moveToFirst()) {
                    // String name = mCursor.getString(0);
                    String proxy = mCursor.getString(1);
                    String port = mCursor.getString(2);
                    if (proxy != null) {
                        if (!proxy.equals("")) {
                            HttpHost proxys = new HttpHost(proxy, Integer.parseInt(port));
                            http.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxys);
                        }
                    }

                }
            } finally {
                try {
                    mCursor.close();
                } catch (Exception e) {
                    mCursor = null;
                }
                mCursor = null;
            }
        }

自 Android 4.2 以来,代码因安全异常而失败,用户和进程都没有 WRITE_APN_SETTINGS 权限。 我加了 和 但没有任何效果。 有人知道如何解决吗?

最佳答案

WRITE_APN_SETTINGS

现在是系统级权限:

"Ice Cream Sandwich" and WRITE_APN_SETTINGS

看来您需要将您的应用程序设置为系统应用程序才能使用 APN 设置,这需要有根电话。

关于android - 从 4.2 开始获取首选 apn 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13515175/

相关文章:

node.js - 如何使用 http-proxy-middleware 代理到许多不同的目标?

Python Selenium Webdriver - 即时更改代理设置

android - 如何在Android的工具栏上右对齐图像

android - 如何在 Android 中使用导航 Controller 组件返回根 fragment 或层次结构的顶部?

Android 应用程序中的 java.lang.NullPointerException

c# - SSL 是从远程到网络服务器交换信息的唯一途径吗?

Nginx 使用gunicorn 和 python-socketio 进行反向代理

android - 尝试将 downloadUri 添加到 Firestore 文档时出错。 "Could not serialize object. Exceeded maximum depth of 500"

security - SPContext.Current.Web.CurrentUser 返回误导性值

asp.net - 拒绝直接访问文件夹(仅允许通过应用程序)