Вопрос: Проект регистрации в Android / регистрации


Есть ли проект эталонного образца для внедрения экрана регистрации входа / регистрации в Android?

Я подумал о том, что мне нужно знать, чтобы это сделать:

  • Схема действий
  • Проверка текстового поля
  • Текстовые поля
  • Включение / отключение элементов пользовательского интерфейса (т. Е. Ввод имени пользователя, только если данные введены)
  • Асинхронный сетевой запрос, подтверждающий учетные данные
  • Блокировка пользовательского интерфейса, ожидающего входа
  • Перенаправление в следующую операцию на основе результата входа
  • Интервал регистрации, если пользователь 1-го раза
  • Отмена входа в сеть, если пользователь хочет (не сбой при обратном вызове, если пользователь удаляется от Activity)
  • Сохранение пользовательских данных, токен доступа, если они доступны в противном случае, пароль (и шифрование)
  • Переходные анимации, включая обратную связь с доступом
  • Используйте кешированные учетные данные, если они доступны
  • Вход «помни меня»
  • и т.п.

Еще много пулей, чтобы записать, но вы получите эту идею.

Я подозреваю, исправьте меня, если я ошибаюсь, что многие приложения могут иметь (или даже начать) экран входа / регистрации. Вероятно, есть где-то настраиваемый проект Eclipse, который захватывает большинство лучших практик, чтобы разработчики не изобретали велосипед много?

Очевидно, что многие приложения захотят делать что-то по-другому. Понятно, что в некоторых случаях указанное выше неприемлемо. Но .. может быть, для некоторых приложений это разумная «типичная» активность входа?


4


источник


Ответы:


В последней версии плагина для Android Development Tools (ADT) для Eclipse есть мастер для создания новой учетной записи LoginActivity, которая может быть хорошей отправной точкой. Он имеет следующие функции.

  • Макет действия Проверка текстового поля
  • Текстовые поля
  • Включение / отключение элементов пользовательского интерфейса
  • Асинхронный запрос проверки учетных данных
  • Блокировка пользовательского интерфейса, ожидающего входа
  • Отмена входа
  • и т.п.

Он находится в файле -> Новый -> Другой -> Активность Android -> LoginActivity


11



1) создать login.xml (макет деятельности) в / res / layout В этом примере есть дополнительная опция для смены пароля

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/username"
        android:hint="Username"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="180dp"
        android:layout_gravity="center"
        android:ems="10" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/password"
        android:layout_width="250dp"
        android:hint="Password"
        android:layout_marginTop="20dp"
        android:layout_gravity="center"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPassword" />

    <Button
        android:id="@+id/Loginbutton"
        android:layout_gravity="center"
        android:layout_marginTop="30dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Login" />

    <CheckedTextView
        android:id="@+id/changepassword"
        android:layout_width="wrap_content"
        android:layout_marginTop="75dp"
        android:clickable="true"
        android:layout_marginLeft="190dp"
        android:layout_height="wrap_content"
        android:text="Change_Login_Id" />

</LinearLayout>

2) создать класс Login.java в / src //

public class Login extends Activity{
    private Button login;
    private EditText Username;
    private EditText Password;
    private CheckedTextView changeid;
    public SQLiteDatabase sampleDB;
    public String COLUMN_ID="_id";
    public String COLUMN1="username";
    public String COLUMN2="password";
    public String TABLE_NAME="Androdata";
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
        login=(Button)findViewById(R.id.Loginbutton);
        Username=(EditText)findViewById(R.id.username);
        Password=(EditText)findViewById(R.id.password);
        changeid=(CheckedTextView)findViewById(R.id.changepassword);
        sampleDB =  this.openOrCreateDatabase(TABLE_NAME, MODE_PRIVATE, null);
        boolean x=init(TABLE_NAME);
        if(x==false)
        {
        createDB();
        insertDB();
        }
        changeid.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent myintent=new Intent("android.intent.action.DATABASE");
                startActivity(myintent);
            }
        });
        login.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                int k=check();
                if(k==1)                
                {
                    Toast.makeText(Login.this, "Login Successful ...", Toast.LENGTH_SHORT).show();
                    Intent myintent=new Intent("android.intent.action.CHOICE");
                    startActivity(myintent);
                }
                else
                {
                    Username.setText("");
                    Password.setText("");
                    Toast.makeText(Login.this, "Authentication Failed...", Toast.LENGTH_SHORT).show();
                }   
            }
        });
    }
    public boolean init(String tableName)
    {
        Cursor cursor = sampleDB.rawQuery("select DISTINCT tbl_name from sqlite_master where tbl_name = '"+tableName+"'", null);
        if(cursor!=null) {
            if(cursor.getCount()>0) {
                                cursor.close();
                return true;
            }
                        cursor.close();
        }
        return false;
    }
    private void insertDB() {
        sampleDB.execSQL("INSERT INTO " +
                TABLE_NAME +
                " Values ('1','Androviewer','viewer');");   
        System.out.println("Inserted data successfully....");
    }
    private void createDB() {
        sampleDB.execSQL("CREATE TABLE IF NOT EXISTS " +
                TABLE_NAME+ "(" + COLUMN_ID
                + " integer primary key autoincrement, " + COLUMN1
                + " text not null,"+ COLUMN2
                + " text not null);");
        System.out.println("Database created successfully....");
    }
    private int check() {
        String a=Username.getText().toString();
        String b=Password.getText().toString();
        // TODO Auto-generated method stub
        Cursor c = sampleDB.rawQuery("SELECT username, password FROM " +
                TABLE_NAME +
                " where _id=1", null);

        if (c != null ) {
            if  (c.moveToFirst()) {
                do {
                    String orgusername = c.getString(c.getColumnIndex("username"));
                    String orgpassword = c.getString(c.getColumnIndex("password"));
                    if(a.equals(orgusername)&&b.equals(orgpassword))
                    {
                        return 1;
                    }
                    else
                    {
                        return 0;
                    }
                }while (c.moveToNext());
            }
        }
        return 0;
    }
}

3



if u want a single time login u can use shared preferences or make a simple change in my db code .

1)u can set textfield hint in xml

android:hint="ur hint" 

2)Use Intent as i used to move forward from one activity to next.

Do u need any more

1