я пытаюсь создать приложение, которое работает только тогда, когда клиент подключен к моей сети.
, так как методы подключения могут быть через Wi-Fi или VPN, я решил проверить IP-адрес wan сети. Поэтому я доверил себя библиотеке залпа для этого и странице amazon, которая возвращает ip wan.
это мой класс:
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
public final Variabiles vv = new Variabiles();
public String op = "";
public EditText psw=null;
public Button checkpsw=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide();
setContentView(R.layout.activity_main);
psw = (EditText) findViewById(R.id.editText);
checkpsw = (Button) findViewById(R.id.button);
checkpsw.setOnClickListener(this);
}
@Override
public void onClick(View v) {
RequestQueue queue = Volley.newRequestQueue(this);
String url ="http://checkip.amazonaws.com/";
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
vv.setIp(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
vv.setIp( "error");
}
});
queue.add(stringRequest);
op = vv.getIp();
if (op == "xxx.xxx.xxx.xxx") {
if (psw.getText().toString().equals("test")) {
Intent intent = new Intent(MainActivity.this, panel.class);
startActivity(intent);
}
}
}
}
это работает на полпути, потому что с отладкой яобратите внимание, что в
public void onResponse(String response) {
vv.setIp(response);
}
адрес распознается и устанавливается для переменной в классе, который я использую в качестве контейнера переменных. но вне stringRequest все переменные пусты, и я не понимаю, почему или где я не прав ..
в чем ошибка?