Как получить контекст внутри определения WebView? - PullRequest
0 голосов
/ 17 января 2019

Я хочу активировать датчик, когда веб-просмотр загружает специальный URL, поэтому я использовал sensorManager.registerListener в определении веб-просмотра:

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (url.contains("compass")){
        sensorManager.registerListener(view.getContext().getApplicationContext(), compass, SensorManager.SENSOR_DELAY_NORMAL);
    }
}

К сожалению view.getContext().getApplicationContext() не работает. Какой стандартный способ получить контекст здесь?

Ответы [ 2 ]

0 голосов
/ 17 января 2019

В MainActivity.java добавьте следующий код

public class MainActivity extends AppCompatActivity {
public static MainActivity context;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        context = this;
    }
    public static MainActivity getInstance()
    {
        return context;
    }

}

используйте этот контекст, вызывая этот метод

 @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.contains("compass")){
            sensorManager.registerListener(MainActivity.getInstance(), compass, SensorManager.SENSOR_DELAY_NORMAL);
        }
    }
0 голосов
/ 17 января 2019
private Context context;

public Yourclassname(Context context) {//constructor
this.context = context;

используйте этот контекст в вашем коде

SensorManager mSensorMgr = (SensorManager) 
context.getSystemService(Context.SENSOR_SERVICE);

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.contains("compass")){

sensorManager.registerListener(context, 
compass, SensorManager.SENSOR_DELAY_NORMAL);
 }
}

// использовать это или контекст в соответствии с вашим классом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...