三方app跳转APN设置提示“此用户无权修改接入点名称设置”解决方案
程序员文章站
2022-06-22 17:25:00
三方APP跳转设置APN时,发现会提示如下开始还以为是系统本身的问题,从网上搜索也看到很多人在问这个问题,但是从设置菜单点击进入的却没有“无权修改”的这个提示,看到这就放心多了。于是确定跟踪设置apn的这部分代码com.android.settings.ApnSettings @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(...
三方APP跳转设置APN时,发现会提示如下
开始还以为是系统本身的问题,从网上搜索也看到很多人在问这个问题,但是从设置菜单点击进入的却没有“无权修改”的这个提示,看到这就放心多了。于是确定跟踪设置apn的这部分代码
com.android.settings.ApnSettings
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getEmptyTextView().setText(R.string.apn_settings_not_available);
mUnavailable = isUiRestricted();
setHasOptionsMenu(!mUnavailable);
if (mUnavailable) {
addPreferencesFromResource(R.xml.placeholder_prefs);
return;
}
addPreferencesFromResource(R.xml.apn_settings);
}
此用户无权修改接入点名称设置这个提示就是通过getEmptyTextView().setText(R.string.apn_settings_not_available)来显示出来的
通过LOG可以看到mSubscriptionInfo = SubscriptionManager.from(activity).getActiveSubscriptionInfo(subId);这个mSubscriptionInfo为Null,导致后面的都获取不到SIM卡的相关信息,具体原因可能和context有关,这个没具体跟踪。最终修改的地方
mSubscriptionInfo = SubscriptionManager.from(activity).getActiveSubscriptionInfo(subId);
修改为
SubscriptionManager mSubscriptionManager = (SubscriptionManager) getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
List<SubscriptionInfo> activeSubscriptionInfoList = null;
if (mSubscriptionManager != null) {
try {
activeSubscriptionInfoList = mSubscriptionManager.getActiveSubscriptionInfoList();
} catch (Exception ignored) {
}
}
if (activeSubscriptionInfoList != null && activeSubscriptionInfoList.size() > 0) {
for (SubscriptionInfo subscriptionInfo : activeSubscriptionInfoList) {
mSubscriptionInfo = subscriptionInfo;//我的为单卡
}
}
本文地址:https://blog.csdn.net/andylao62/article/details/107950139