Пользователь
- Регистрация
- 11 Май 2025
- Сообщения
- 10
- Автор темы
- #1
Авторизация через API
public class AuthActivity extends AppCompatActivity {
private EditText etLogin, etPassword;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_auth);
etLogin = findViewById(R.id.etLogin);
etPassword = findViewById(R.id.etPassword);
Button btnLogin = findViewById(R.id.btnLogin);
btnLogin.setOnClickListener(v -> {
String login = etLogin.getText().toString();
String password = etPassword.getText().toString();
// Запрос к API CRMP
AuthTask authTask = new AuthTask();
authTask.execute(login, password);
});
}
private class AuthTask extends AsyncTask<String, Void, Boolean> {
@Override
protected Boolean doInBackground(String... params) {
try {
// Пример запроса (замените URL на ваш API)
URL url = new URL("https://api.crmp-server.ru/auth");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
String data = "login=" + params[0] + "&password=" + params[1];
OutputStream os = conn.getOutputStream();
os.write(data.getBytes());
os.flush();
int code = conn.getResponseCode();
return (code == 200); // Успешная авторизация
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@Override
protected void onPostExecute(Boolean result) {
if (result) {
startActivity(new Intent(AuthActivity.this, MainActivity.class));
} else {
Toast.makeText(AuthActivity.this, "Ошибка авторизации!", Toast.LENGTH_SHORT).show();
}
}
}
}
Список серверов -
public class Server {
private String name;
private String ip;
private int playersOnline;
// Геттеры и сеттеры
}
public class ServerAdapter extends RecyclerView.Adapter<ServerAdapter.ViewHolder> {
private List<Server> servers;
public ServerAdapter(List<Server> servers) {
this.servers = servers;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_server, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Server server = servers.get(position);
holder.tvName.setText(server.getName());
holder.tvPlayers.setText("Онлайн: " + server.getPlayersOnline());
holder.itemView.setOnClickListener(v -> {
// Запуск клиента с выбранным IP
Intent intent = new Intent(v.getContext(), GameActivity.class);
intent.putExtra("server_ip", server.getIp());
v.getContext().startActivity(intent);
});
}
static class ViewHolder extends RecyclerView.ViewHolder {
TextView tvName, tvPlayers;
ViewHolder(View itemView) {
super(itemView);
tvName = itemView.findViewById(R.id.tvServerName);
tvPlayers = itemView.findViewById(R.id.tvServerPlayers);
}
}
}
Запуск клиента -
<!-- activity_game.xml -->
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
public class GameActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
String serverIp = getIntent().getStringExtra("server_ip");
webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("https://mobile.crmp-server.ru?ip=" + serverIp); // Ваш вев-клиент
}
}
Старая работа 2022 год ( моя )
public class AuthActivity extends AppCompatActivity {
private EditText etLogin, etPassword;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_auth);
etLogin = findViewById(R.id.etLogin);
etPassword = findViewById(R.id.etPassword);
Button btnLogin = findViewById(R.id.btnLogin);
btnLogin.setOnClickListener(v -> {
String login = etLogin.getText().toString();
String password = etPassword.getText().toString();
// Запрос к API CRMP
AuthTask authTask = new AuthTask();
authTask.execute(login, password);
});
}
private class AuthTask extends AsyncTask<String, Void, Boolean> {
@Override
protected Boolean doInBackground(String... params) {
try {
// Пример запроса (замените URL на ваш API)
URL url = new URL("https://api.crmp-server.ru/auth");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
String data = "login=" + params[0] + "&password=" + params[1];
OutputStream os = conn.getOutputStream();
os.write(data.getBytes());
os.flush();
int code = conn.getResponseCode();
return (code == 200); // Успешная авторизация
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@Override
protected void onPostExecute(Boolean result) {
if (result) {
startActivity(new Intent(AuthActivity.this, MainActivity.class));
} else {
Toast.makeText(AuthActivity.this, "Ошибка авторизации!", Toast.LENGTH_SHORT).show();
}
}
}
}
Список серверов -
public class Server {
private String name;
private String ip;
private int playersOnline;
// Геттеры и сеттеры
}
public class ServerAdapter extends RecyclerView.Adapter<ServerAdapter.ViewHolder> {
private List<Server> servers;
public ServerAdapter(List<Server> servers) {
this.servers = servers;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_server, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Server server = servers.get(position);
holder.tvName.setText(server.getName());
holder.tvPlayers.setText("Онлайн: " + server.getPlayersOnline());
holder.itemView.setOnClickListener(v -> {
// Запуск клиента с выбранным IP
Intent intent = new Intent(v.getContext(), GameActivity.class);
intent.putExtra("server_ip", server.getIp());
v.getContext().startActivity(intent);
});
}
static class ViewHolder extends RecyclerView.ViewHolder {
TextView tvName, tvPlayers;
ViewHolder(View itemView) {
super(itemView);
tvName = itemView.findViewById(R.id.tvServerName);
tvPlayers = itemView.findViewById(R.id.tvServerPlayers);
}
}
}
Запуск клиента -
<!-- activity_game.xml -->
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
public class GameActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
String serverIp = getIntent().getStringExtra("server_ip");
webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("https://mobile.crmp-server.ru?ip=" + serverIp); // Ваш вев-клиент
}
}
Старая работа 2022 год ( моя )