1

私のアプリケーションでは、機密性の高いユーザー データ (銀行の詳細など) を保存し、ユーザーは個別のパスワードを使用して各詳細をロックできます。ユーザーがインストール後に最初にアプリケーションを実行するとすぐにマスターパスワードを設定して、パスワードを忘れた場合にこのマスターパスワードを入力してデータを回復できるようにしたい.

そのため、アプリケーションをインストール後に初めて実行すると、マスター パスワードの設定を求めるポップアップが表示され、ユーザーはパスワードを設定して続行する必要があります。

ただし、電話の再起動後、またはアプリケーションを閉じた後にアプリケーションが開始される場合、ポップアップは表示されません。

ポップアップは、アプリケーションがインストール後に初めて実行されるときに 1 回だけ表示されます。

ダイアログを作成する関数であると仮定するsetMasterPassword()と、最初の実行時にこの関数をどこで呼び出すのですか?

アンドロイドには、アプリが新しくインストールされたことを判断するためのパラメータがありますか?

または、設定変数を使用してこれを確認する必要がありますか? {PreferenceVariable のカウンターを 0 として初期化し、onCreate() でこの値をチェックし、カウンターが 0 の場合にのみ setMasterPassword() を呼び出し、カウンターを 1 ずつインクリメントして、二度と呼び出されないようにするようなもの。}

これを行う最良の方法は何ですか?

前もって感謝します!

4

4 に答える 4

2

このコードはどこかで見つかり、私にとっては完璧に機能しています。だから、あなたにも役立つかもしれないと思いました。

見てください。

SharedPreferenceを使用して firstrun 値を保存し、起動アクティビティをその値に対してチェックインします。値が設定されている場合、ダイアログを表示する必要はありません。そうでない場合は、ダイアログを表示し、firstrun フラグを SharedPreference に保存します。

MainActivity で:

public void onCreate(){
    boolean firstrun = getSharedPreference("PREFERENCE", MODE_PRIVATE).getBoolean("firstrun", true);
    if (firstrun){
   [[ ...Display the dialog ]]
    // Save the state
    getSharedPreference("PREFERENCE", MODE_PRIVATE)
        .edit()
        .putBoolean("firstrun", false)
        .commit();
    }
}
于 2012-08-10T17:42:59.103 に答える
2

「フレッシュインストール」ブール値があるかどうかも調べてみましたが、そのようなものはないようですので、人々がここで行ったように、共有設定を選択する必要があります。

PS: ところで、それはその質問の複製です。

PS2: ユーザーがアプリケーションの保存された情報をすべて削除すると、小切手も消去されるため、再度入力できるようになることに注意してください。

情報セキュリティを向上させる方法:

  1. ユーザーの情報をいくつかの制御バイト (乱数、特定の文字列など) と共に保存し、これをユーザーのパスワードで暗号化します。
  2. ユーザーの情報が必要なときはいつでも、そのファイルを取得し、そのコンテンツをユーザーのパスワードで復号化してみてください (毎回尋ねられます)。
  3. 制御バイトをチェックします (substr()おそらく a で十分です)。それらが同じである場合は、情報を取得してください。そうでない場合は、再度プロンプトを表示します。

これにより、いくつかの利点が得られます。

  • ユーザーのパスワードをどこにも保存しません。SharedPreferences はこれを保存せず、「firstTime」変数のみを保存します。
  • ユーザーがアプリケーションの情報をダンプした場合、パスワードを再度入力しても情報は減りません。
  • エクスプローラーからそのファイルを開くと、一連の数字、記号、およびおそらく読み取り不能なバイトのみが表示され、ほとんどの場合エディターが壊れます。
于 2012-08-08T18:06:18.510 に答える
1

したがって、シングルパス認証の欠点です。悪意のあるユーザーがパスワードの取得/変更に成功した場合、どのメカニズムを導入してもそれらを阻止できません。情報が非常に機密性の高いものである場合は、2 番目の認証メカニズム (秘密の質問、電子メールの確認など) を有効にすることをお勧めします。

于 2012-08-08T18:39:27.053 に答える
0

最善の方法は、おそらくインストール時にレシーバーを設定することです。

<receiver android:name =".CLASSNAME">
     <intent-filter>
                 <action android:name="com.android.vending.INSTALL_REFERRER"/>

      </intent-filter>
      </receiver> 

(これらに慣れていない場合は、ブロードキャストを取得するために、「CLASSNAME」と呼ばれる BroadcastReciever 拡張クラスを作成する必要があります。)

また、インストール リファラーは市場に出ていない限り機能しないため、偽のインストールをシミュレートする際にこのスタック オーバーフローの回答に従うことができます。アンドロイド紹介追跡をテストする方法は?

幸運を祈ります。

于 2012-08-08T18:11:44.860 に答える