Вход в приложение Android - PullRequest
5 голосов
/ 17 ноября 2010

Может кто-нибудь помочь мне предложить хороший урок, с которого я мог бы начать.Я хочу создать простое приложение с приборной панелью и экраном входа.Впервые у пользователя запрашивается экран входа в систему.проверка входа осуществляется через POST-вызов к удаленному PHP-скрипту.Как только пользователь вошел в систему, он / она должен быть перенаправлен на панель управления.Как только пользователь закроет и снова откроет приложение, его следует перенаправить на экран входа в систему.

Я знаю, как создавать формы и как отправлять сообщения, необходима помощь в области переключения макетов на основе ролей пользователей идля импорта / расширения классов, например, я предпочитаю иметь отдельный класс входа (деятельности).но этот класс входа необходимо импортировать в Main (main должен расширять Activity)

Ответы [ 4 ]

19 голосов
/ 12 октября 2011
2 голосов
/ 11 мая 2014

Я создал SDK для UserApp , который заботится о большей части аутентификации пользователя, такой как вход в систему, регистрация, сеансы, профили пользователей, социальный вход и т. Д.

https://github.com/userapp-io/userapp-android

Поскольку он с открытым исходным кодом, вы можете изменить его по своему усмотрению и подключиться к собственным службам.

Форма входа будет размещена внутри фрагмента, который расширяет AuthFragment, например:

public class LoginFragment extends AuthFragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_signup, container, false);

        // Setup the login form with bindings to UserApp
        super.setupLoginForm(view, R.id.login, R.id.password, R.id.login_button);

        return view;
    }

    @Override
    public Boolean onLoginStart(String login, String password, Boolean isSocialLogin) {
        // Show loader when waiting for server
        getView().findViewById(R.id.login_form).setVisibility(View.GONE);
        getView().findViewById(R.id.login_status).setVisibility(View.VISIBLE);

        // Return true to complete the login
        return true;
    }

    @Override
    public void onLoginCompleted(Boolean authenticated, Exception exception) {
        // Hide the loader
        getView().findViewById(R.id.login_form).setVisibility(View.VISIBLE);
        getView().findViewById(R.id.login_status).setVisibility(View.GONE);

        if (exception != null) {
            // Show an error message
            ((TextView) getView().findViewById(R.id.error_text)).setText(exception.getMessage());
        } else {
            // Clear the message
            ((TextView) getView().findViewById(R.id.error_text)).setText("");
        }
    }
}

А макет для LoginFragment будет выглядеть примерно так:

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

    <!-- Progress -->
    <LinearLayout
        android:id="@+id/login_status"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center_horizontal"
        android:orientation="vertical"
        android:visibility="gone" >

        <ProgressBar
            style="?android:attr/progressBarStyleLarge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp" />

        <TextView
            android:id="@+id/login_status_message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="16dp"
            android:fontFamily="sans-serif-light"
            android:text="@string/login_progress_signing_in"
            android:textAppearance="?android:attr/textAppearanceMedium" />
    </LinearLayout>

    <!-- Login form -->
    <ScrollView
        android:id="@+id/login_form"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <LinearLayout 
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center" >

            <EditText
                android:id="@+id/login"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="text"
                android:hint="@string/username"
                android:maxLines="1"
                android:singleLine="true" />

            <EditText
                android:id="@+id/password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textPassword"
                android:hint="@string/password"
                android:maxLines="1"
                android:singleLine="true" />

            <Button
                android:id="@+id/login_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                android:paddingLeft="32dp"
                android:paddingRight="32dp"
                android:text="@string/login" />

            <Button
                android:id="@+id/facebook_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                android:paddingLeft="32dp"
                android:paddingRight="32dp"
                android:text="@string/facebook_login" />

            <Button
                android:id="@+id/show_signup"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                android:paddingLeft="32dp"
                android:paddingRight="32dp"
                android:text="@string/signup" />

            <TextView
                android:id="@+id/error_text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=""
                android:textAppearance="?android:attr/textAppearanceSmall" />

        </LinearLayout>
    </ScrollView>

</LinearLayout>

Затем добавьте его в макет вашего основного занятия вместе с другим фрагментом, который содержит вашу «панель мониторинга»:

<RelativeLayout ... >
    <fragment
        android:id="@+id/loginFragment"
        android:name="com.example.demo.LoginFragment"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" />

    ...
</RelativeLayout>

Это только вкратце показало, как можно использовать библиотеку. Смотрите документацию для получения дополнительной информации о том, как его использовать. Также взгляните на демонстрационное приложение на GitHub.

Как указано в принятом ответе; чтобы выйти из системы, когда приложение закрыто, прослушайте событие onStop() в вашей основной деятельности и позвоните session.logout(), например:

UserApp.Session session;
session.logout();
2 голосов
/ 17 ноября 2010

Не уверен, что я полностью понимаю ваш вопрос, но когда дело доходит до начала и окончания занятий, этот урок очень хорош:

http://developerlife.com/tutorials/?p=302

Если вы хотите, чтобы пользователь был, как вывызовите его, перенаправив на экран входа в систему, когда вы вернетесь к приложению после того, как оно было в фоновом режиме для решения, чтобы перехватить событие onStop () в вашей основной деятельности.Это событие вызывается, когда пользователь покидает приложение.

Если вы объясните строку «но этот класс входа необходимо импортировать в Main», далее я также смогу ответить на этот вопрос.

0 голосов
/ 17 ноября 2010

Что ж, если вы немного знаете php, mysql и можете создать php-файл для проверки учетных данных, то это будет полезно:

http://www.androidsnippets.org/snippets/36/index.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...