我需要能够读取当前的APN名称。我的应用程序是一个系统应用程序(位于 /system/app),我有根权限。
我正在尝试获取APN名称,但这是不可能的,因为我总是被提示:
No permission to write APN settings
我还在Android清单中添加了以下权限
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS"/>
目标SDK
谢谢。
写入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;
}
}
}
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