0

私はAndroidでの作業に本当に慣れていないので、この前置きをします。

そのため、既存のアプリで作業し、ユーザー名が入力されていない場合にユーザーにユーザー名の入力を求める画面を作成する必要があります。そうすると、現在のメインアクティビティが起動しません(つまり、アプリが完全に起動しません。代わりに、ユーザー名が入力されるまで、その画面に表示されます。)

ユーザーが認証および承認されていない場合、ユーザーがそのページを通過できないという点で、Webアプリのログインページと同じだと思います。ただし、このアプリには認証も承認もありません。代わりに、最初の実行時にユーザーはユーザー名で登録する必要があり、そのユーザー名はデータベースに保存されます。その後の実行では、ユーザーがすでにその電話に登録しているため、アプリのメインアクティビティが開始されます。実際、アプリがすべてのデータとともに削除されて再インストールされない限り、アプリはユーザーに名前の入力を再度求めることはありません。

これは暗黙的に、ユーザーの名前をデータベースまたは他の種類のストレージに保存する必要があることを意味します。

だから私は、既存のメインアクティビティを持つアプリでこれを行うための最良の方法は何でしょうか?

その既存のメインアクティビティでこれを実行するか、新しいアクティビティを作成してこのプロンプト画面を表示し、実際には、ユーザーが名前を入力するまでメインアクティビティの実行をブロックする必要がありますか?

チュートリアルやリンクがあれば参考になりますので、よろしくお願いします。

4

3 に答える 3

3

メインアクティビティ(ホームインテント)を、資格情報(ユーザー名など)を要求するダイアログアクティビティにします。次に、ユーザーが送信(またはボタンを呼び出したいもの)を押すと、アプリの「メイン」アクティビティ、つまりログイン画面の後の最初のアクティビティが開始されます。

ログイン画面を起動するときに、ユーザーがすでにログインしているかどうかを確認します。ログインしている場合は、すぐに「メイン」アクティビティを開始し、ログインをバイパスします。

于 2012-04-10T17:38:15.730 に答える
2

ユーザー名とパスワードのログインアクティビティを作成します。 ユーザーが新規ユーザーの場合は、初めて登録します。 次に、入力した値を取得し、共有設定を使用して保存し、アクティビティを開きます。このように。

 SharedPreferences pref = context.getSharedPreferences("PREF_NAME", Context.MODE_PRIVATE);


pref.edit().putString("USERNAME", "PASSWORD").commit();<--Here use real username and password..


 pref.edit().clear().commit();
 Intent i=new Intent(this,youractivity.class);
startActivity(i);

そうしないと

ユーザーにユーザー名とパスワードのフィールドを入力させてから、このような共有設定でそれらを確認します。

   SharedPreferences pref = context.getSharedPreferences("PREF_NAME", Context.MODE_PRIVATE);
    String pswrd= pref.getString("Username", "somevalue");<--use entered username

pswrdが入力されたパスワードと一致する場合..メインアクティビティを開始します..

  if(pswrd==entered password){
 Intent i=new Intent(this,youractivity.class);
startActivity(i);
  }

それが明確であることを願っています。

于 2012-04-10T17:47:29.573 に答える
0

たぶん、ラジュの答えと同じです-私はそれをこのようにやっています:

作成時の主なアクティビティ

if (!prefs.contains("username")) {
    startActivity(new Intent(this, Login.class));
    finish();
}

ログインが終了し、「ユーザー名」が保存されたときのログインクラス再起動メインアクティビティ:

finish();
startActivity(new Intent(getApplicationContext(), Main.class));

非常にシンプルですが、うまく機能します。

于 2012-04-10T18:03:01.937 に答える