【问题标题】:Trying to change Carrier name尝试更改运营商名称
【发布时间】:2018-01-12 01:22:08
【问题描述】:

我正在尝试更改运营商名称(显示在左上边框的名称)。

我是 Android Studio 的新手,所以每个提示都会对我有用...

public void enviar(View v)
{
// Get System TELEPHONY service reference
TelephonyManager tManager = (TelephonyManager) getBaseContext()
        .getSystemService(Context.TELEPHONY_SERVICE);

tManager.hasCarrierPrivileges();
// Get carrier name (Network Operator Name)
String nom = "DESIRED CARRIER NAME";
tManager.setOperatorBrandOverride(nom);
String carrierName = tManager.getSimOperatorName();

//TESTING THE CARRIER NAME
TextView tv = (TextView) findViewById(R.id.textView);
tv.setText(carrierName);

}}

“enviar”设置在按钮上,在 XML 中

android:OnClick="enviar"

我也需要设置 APN,只需单击此按钮。看起来很简单。定义我自己的 APN 和运营商名称的按钮。不知道是否需要root权限...

谢谢你们!

【问题讨论】:

  • I'm trying to change the carrier name ... 干什么?!有什么实际用途,还是只是在浪费时间?
  • 因为我们是一家公司,而且我们使用不同的提供商,所以我想显示我们自己的公司名称。
  • 我怀疑您是否能够更改此设置,除非您正在创建 OEM 源代码的 Android 版本。
  • 那么,您想隐藏 真实运营商名称 并伪造您的吗?对我来说,这听起来有点非法
  • @FranB。你们公司卖手机吗?你们提供更新吗?如果是这样,那么您应该能够配置它。如果没有,您必须与设备的“运营商”联系,以将您的签名证书作为注册运营商证书放入他们的 ROM。

标签: android


【解决方案1】:

第一个问题是您实际上并没有使用tManager.hasCarrierPrivileges() 的结果。该方法返回一个(非常重要的)布尔值,告诉您是否真的能够执行任何运营商操作,例如更改运营商品牌。

第二个问题是您必须实际是承运人才能拥有承运人特权。这通过验证您的应用程序的签名证书是否在the phone's UICC 中来检查。我假设你不是承运人,因为你在问这个问题。

由于 UICC 是在 ROM 级别配置的,因此即使使用 sudo 访问,您也不太可能插入自己的密钥。

另见:Sign App with UICC Carrier Privileges Certificates

【讨论】:

    【解决方案2】:

    问题是你需要在你的应用(Carrier App)中拥有运营商权限或者你需要自己编译AOSP。

    要修改apn,您需要将应用程序安装为系统应用程序。

    【讨论】:

    • 你能解释一下吗
    • 根据访问级别,应用程序有不同的安装目录。如果您需要修改品牌或 apn 等参数,您的应用程序应安装在目录 /system/app 或 /system/priv-app/ 但为此您必须是源代码的所有者或在手机上具有 root 访问权限应用程序的安装位置。更改默认参数的另一种方法是创建运营商应用程序,但过程更长。
    • 您还应该使用 android.permission.READ_PHONE_STATE 或 android.permission.WRITE_APN_SETTINGS 等权限
    猜你喜欢
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多