Cómo mover TelephonyManager a una clase diferente a continuación, MainActivity

headsman:

la toma de im y APP sobre la información de red, etc. Tengo un problema cuando quiero utilizar TelephonyManager en diferente clase, entonces mi clase MainActivity. Cuando tengo un código simple en una sola clase, entonces todo funciona bien, pero el problema es cuando quiero hacer otra clase. Programa continuación, está recopilando sin ningún problema, pero la aplicación se bloquea.

Trabajando código en una clase:

MainActivity.java

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final TextView textMCC = findViewById(R.id.mcc);
    textMCC.setText(getMCC());
}
public String getMCC() {
    TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    String networkOperator = telephonyManager.getNetworkOperator();
    return networkOperator.substring(0, 3);
}

Cuando trato de dividir esto a dos clases diferentes, y MainActivity.java Cell.java la APP está fallando.

Actividad principal:

public class MainActivity extends AppCompatActivity {


 Cell cellex = new Cell();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final TextView textMCC = findViewById(R.id.mcc);
    textMCC.setText(cellex.getMCC());
}
}

Cell.java:

public class Cell {
Context context;
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

public String getMCC() {
    // TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    String networkOperator = telephonyManager.getNetworkOperator();
    return networkOperator.substring(0, 3);
}
}

Antes de añadir la línea: Contexto contexto, el programa no compila.

Abhilash Bhaduri:

Esto sucede porque la actividad tiene getSystemService método, que remite la solicitud al Context.getSystemService (). Así que hay que enviar Contexto parámetro dentro getMCC ().

Cadena getMCC (contenido de Contexto) {TelephonyManager telephonyManager = context.getSystemService (Context.TELEPHONY_MANAGER_SERVICE); }

Cadena mcc = cell.getMCC (MainActivity.this);

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=379008&siteId=1
Recomendado
Clasificación