当前位置: 首页 > 知识库问答 >
问题:

从代码[root]读取当前APN名称

李俊雅
2023-03-14

我需要能够读取当前的APN名称。我的应用程序是一个系统应用程序(位于 /system/app),我有根权限。

我正在尝试获取APN名称,但这是不可能的,因为我总是被提示:

No permission to write APN settings

我还在Android清单中添加了以下权限

<uses-permission android:name="android.permission.WRITE_APN_SETTINGS"/>

目标SDK

谢谢。

共有2个答案

季森
2023-03-14

写入APN设置

不供第三方应用程序使用。您无法读取API中的APN设置

对于API

public class APNHelper {

    private Context context;

    public APNHelper(final Context context) {
        this.context = context;
    }

    @SuppressWarnings("unchecked")
    public List<APN> getMMSApns() {
        final Cursor apnCursor = this.context.getContentResolver()
                .query(Uri.withAppendedPath(Telephony.Carriers.CONTENT_URI,
                        "current"), null, null, null, null);
        if (apnCursor == null) {
            return Collections.EMPTY_LIST;
        } else {
            final List<APN> results = new ArrayList<APN>();
            if (apnCursor.moveToFirst()) {
                do {
                    final String type = apnCursor.getString(apnCursor
                            .getColumnIndex(Telephony.Carriers.TYPE));
                    if (!TextUtils.isEmpty(type)
                            && (type.equalsIgnoreCase("*") || type
                            .equalsIgnoreCase("mms"))) {
                        final String mmsc = apnCursor.getString(apnCursor
                                .getColumnIndex(Telephony.Carriers.MMSC));
                        final String mmsProxy = apnCursor.getString(apnCursor
                                .getColumnIndex(Telephony.Carriers.MMSPROXY));
                        final String port = apnCursor.getString(apnCursor
                                .getColumnIndex(Telephony.Carriers.MMSPORT));
                        final APN apn = new APN();
                        apn.MMSCenterUrl = mmsc;
                        apn.MMSProxy = mmsProxy;
                        apn.MMSPort = port;
                        results.add(apn);

                        Toast.makeText(context,
                                mmsc + " " + mmsProxy + " " + port,
                                Toast.LENGTH_LONG).show();
                    }
                } while (apnCursor.moveToNext());
            }
            apnCursor.close();
            return results;
        }
    }
}
万俟丁雷
2023-03-14

Android 5.1引入了运营商特权(https://source.android.com/devices/tech/config/uicc)。

要更改APN,您必须使用与SIM卡相同的签名来签名您的应用程序。如果您这样做,那么就可以更改APN。您不需要

<uses-permission android:name="android.permission.WRITE_APN_SETTINGS"/>

在Android清单中。

例如,你可以用Android Studio签署你的应用程序(https://developer.android.com/studio/publish/app-signing.html)

 类似资料:
  • 我读过很多关于用Android通过代码读取APN的话题,自从Android 4.2以来,这似乎已经不可能了。然而,所有的主题都超过了2/3年,我想知道是否有一个好的解决方案,使我能够读取设备的当前APN。我看到过一些关于SQLiteWrapper的东西,但它不起作用,或者我只是没有足够的资格让它起作用。

  • 问题内容: 如何从代码块中获取电流? 仅具有: 我可以用代替一个函数,但是有内置功能吗? 问题答案: 使用os.Getenv 从文档: Getenv检索由键命名的环境变量的值。它返回值,如果不存在该变量,则该值为空。 例: Go 1.8+更新 Go 1.8具有通过go / build导出的默认GOPATH:

  • 在Powershell中,我使用命令Register ScheduledJob-ScriptBlock{…}创建了一个ScheduledJob。此ScheduledJob执行脚本块。如何从ScriptBlock检索当前运行的ScheduledJob的名称? 例如。 Windows任务计划程序中的任务正在运行以下命令: powershell.exe-NoLogo-NonInteractive-Win

  • 本文向大家介绍python获取当前运行函数名称的方法实例代码,包括了python获取当前运行函数名称的方法实例代码的使用技巧和注意事项,需要的朋友参考一下 python获取当前运行函数名称的方法实例代码 摘要: c/c++中获取函数所在源码名,函数名和行号的方法很简单 __FILE__,__FUNCTION__和__LINE__ python没有这种语法,但也可以通过某种方法得到,这里给出例子,使

  • 问题内容: 我已经找到了针对Objective-C的答案,但是林先生很难迅速做到这一点。 我用它来获取当前位置的国家代码: 但是,如何将该国家/地区代码转换为国家/地区名称,例如在此示例中,将“ US”转换为“ United States”? 问题答案: 迅捷3

  • 本文向大家介绍Python获取当前路径实现代码,包括了Python获取当前路径实现代码的使用技巧和注意事项,需要的朋友参考一下  Python获取当前路径实现代码 import os,sys 使用sys.path[0]、sys.argv[0]、os.getcwd()、os.path.abspath(__file__)、os.path.realpath(__file__) sys.path是Pyth