2013-08-24 4 views
0

Я создаю приложение, которое требует, чтобы пользователь заходил в систему перед входом в основное приложение. Когда он нажимает кнопку «Войти», он должен убедиться, что адрес электронной почты/имя пользователя и пароль верны, прежде чем разрешить пользователю в приложение или дать им ошибку. Мне было трудно найти, как это сделать. Вот мои страницы 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.

Если вам нужны другие страницы, пожалуйста, дайте мне знать. Спасибо заранее! Я действительно понимаю это.

ответ

0

Его широкий вопрос. Что вам может понадобиться, так это вам придется обнаруживать, когда пользователь запускает приложение в первый раз. При первом входе в систему вы можете попросить пользователя ввести имя пользователя и пароль. Теперь самый простой (но может и не самый лучший) способ сохранить его в SharedPreferences. Затем, когда пользователь придет в приложение в следующий раз, вы можете проверить его с SharedPreference, и если логин верен, то продолжайте, а затем покажите ошибку.

Внутри вашей функции sendMessage вы можете сначала проверить, хранится ли что-либо в sharepreference с определенным ключом, который вы использовали для имени пользователя и пароля. Если он не сохранен, пользователь приходит в первый раз. Затем запустите новое намерение, в котором вы можете его сохранить. Если есть некоторые сохраненные вещи, вы можете извлечь их из общего предпочтения и сравнить значения с введенными значениями.

Теперь не рекомендуется сохранять пароль в SharedPreference как на корневых устройствах, к которым можно получить доступ. Вы можете использовать хэширование/шифрование пароля.

remember password in android app См

SharedPreferences for login in android и

Best option to store username and password in android app

для кодовых sniplets и другой логики.

+0

Оглядываясь, я также задавался вопросом, будет ли этот сайт хорошей идеей использовать в качестве шаблона: http: //www.androidhive.info/2012/01/android-login-and-registration-with-php -mysql-and-sqlite/Как вы думаете? – user2712795

+0

Ооо, похоже, довольно хороший шаблон, если вы хотите задействовать и серверную сторону. Я также добавлю его в закладки. Сделайте комментарий позже и расскажите мне, как это происходит. :) –

+0

Итак, я получил все это, и когда я запускаю его через Android-браузер моей мамы, я получаю сообщение об ошибке, которое он неожиданно остановил. Считаете ли вы, что можете быстро взглянуть на то, что может быть неправильным? У меня нет ошибок в eclipse, и только несколько предупреждений о том, что некоторые переменные не используются. Я отправлю ссылку на него, как только я получу вопрос ... – user2712795

Смежные вопросы