Я создаю приложение, которое требует, чтобы пользователь заходил в систему перед входом в основное приложение. Когда он нажимает кнопку «Войти», он должен убедиться, что адрес электронной почты/имя пользователя и пароль верны, прежде чем разрешить пользователю в приложение или дать им ошибку. Мне было трудно найти, как это сделать. Вот мои страницы main_activity, которые показывают основной экран входа.Вход пользователя и пароль: Консоль базы данных
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical">
<!-- Email Label -->
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#372c24"
android:text="@string/Email"/>
<EditText
android:id="@+id/Email_enter"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dip"
android:layout_marginTop="5dip"
android:hint="@string/Email_enter"
android:singleLine="true"
android:inputType="textEmailAddress"/>
<!-- Password Label -->
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#372c24"
android:text="@string/edit_message2"/>
<EditText
android:id="@+id/Password_enter"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:hint="@string/Password_enter"
android:inputType="textPassword"
android:singleLine="true" />
<!-- Login button -->
<Button android:id="@+id/btnLogin"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dip"
android:text="@string/Login"
android:onClick="sendMessage"/>
<Button
android:id="@+id/query"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Query"
android:onClick="View arg0"/>
Пожалуйста, игнорируйте кнопку "запрос" на данный момент. Вот ява файл:
package com.example.awesomefilebuilder;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Base_Activity {
public final static String EXTRA_MESSAGE = "com.example.awesomefilebuilder.MESSAGE";
public final String TAG = "MainActivity";
public final String edit_message ="Username";
public static final String DATABASE_NAME = "data";
public static final String TABLE_NAME = "comments_table";
public static final String C_ID = "_id";
public static final String NAME = "name";
public static final String COMMENT = "comment";
public static final String EMAIL = "email";
public static final String TIME = "time";
public static final String PASSWORD = "password";
public static final int VERSION = 1;
View view;
SQLiteDatabase db;
DbHelper dbhelper;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
DbHelper dbhelper = new DbHelper(getApplicationContext());
db = dbhelper.getWritableDatabase();
view = inflater.inflate(R. layout.activity_main, container,false);
ContentValues cv = new ContentValues();
cv.put(DbHelper.NAME, NAME);
cv.put(DbHelper.COMMENT, COMMENT);
cv.put(DbHelper.EMAIL, EMAIL);
cv.put(DbHelper.PASSWORD, PASSWORD);
db.insert(DbHelper.TABLE_NAME, null, cv);
Button query = (Button) view.findViewById(R.id.query);
query.setOnClickListener(new OnClickListener()
{
public void onClick(View arg0)
{
String [] columns = {DbHelper.NAME, DbHelper.COMMENT, DbHelper.EMAIL};
Cursor cursor = db.query(DbHelper.TABLE_NAME, null, null, null, null, null, null);
cursor.moveToFirst();
while(cursor.moveToNext())
{
String name = cursor.getString(cursor.getColumnIndex(DbHelper.NAME));
String comment = cursor.getString(cursor.getColumnIndex(DbHelper.COMMENT));
String password = cursor.getString(cursor.getColumnIndex(DbHelper.PASSWORD));
String email = cursor.getString(cursor.getColumnIndex(DbHelper.EMAIL));
Toast.makeText(getApplicationContext(), "Name = "+ name +"/nComment= "+ comment,Toast.LENGTH_SHORT).show();
}
cursor.close();
}
});
return view;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(TAG, "onCreate");
}
@Override
public void onDestroy() {
super.onDestroy(); // Always call the superclass
// Stop method tracing that the activity started during onCreate()
android.os.Debug.stopMethodTracing();
}
/** Called when the user clicks the Send button */
public void sendMessage(View view) {
Intent intent = new Intent(this, HomePageMain.class);
EditText editText = (EditText) findViewById(R.id.Email_enter);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
Log.i(TAG, "sendMessage");
}
};
Когда пользователь нажимает кнопку Войти, я хочу, чтобы приложение, чтобы проверить данные, прежде чем разрешить их или давать ошибку. Как мне это сделать? После этого, если данные действительно проверяются правильно, я хочу, чтобы приложение отправило пользователя на следующую главную страницу HomePageMain.class.
Если вам нужны другие страницы, пожалуйста, дайте мне знать. Спасибо заранее! Я действительно понимаю это.
Оглядываясь, я также задавался вопросом, будет ли этот сайт хорошей идеей использовать в качестве шаблона: http: //www.androidhive.info/2012/01/android-login-and-registration-with-php -mysql-and-sqlite/Как вы думаете? – user2712795
Ооо, похоже, довольно хороший шаблон, если вы хотите задействовать и серверную сторону. Я также добавлю его в закладки. Сделайте комментарий позже и расскажите мне, как это происходит. :) –
Итак, я получил все это, и когда я запускаю его через Android-браузер моей мамы, я получаю сообщение об ошибке, которое он неожиданно остановил. Считаете ли вы, что можете быстро взглянуть на то, что может быть неправильным? У меня нет ошибок в eclipse, и только несколько предупреждений о том, что некоторые переменные не используются. Я отправлю ссылку на него, как только я получу вопрос ... – user2712795