Как переместить TelephonyManager в другой класс, чем MainActivity - PullRequest
0 голосов
/ 30 марта 2020

я делаю и приложение о сети информации et c. У меня возникла проблема, когда я хочу использовать TelephonyManager в другом классе, чем мой класс MainActivity. Когда у меня есть простой код в одном классе, тогда все работает хорошо, но проблема в том, когда я хочу создать другой класс. Затем программа без проблем компилируется, но приложение вылетает.

Рабочий код в одном классе:

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);
}

Когда я пытаюсь разделите это на два разных класса, MainActivity. java и Cell. java приложение аварийно завершается.

Основная активность:

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);
}
}

Перед добавлением строки: Контекстный контекст, программа не скомпилировалась.

1 Ответ

1 голос
/ 31 марта 2020

Это происходит потому, что у Activity есть метод getSystemService, который перенаправляет запрос в Context.getSystemService (). Поэтому вы должны отправить параметр Context внутри getM CC ().

String getM CC (содержимое контекста) {TelephonyManager telephonyManager = context.getSystemService (Context.TELEPHONY_MANAGER_SERVICE); }

Строка m cc = cell.getM CC (MainActivity.this);

...