2017-03-21 2 views
0

ユーザーが間違ったパスワードを3回入力すると、ロック画面にトーストを表示しようとしています。ログコンソールからユーザーが3回失敗したことを確認できましたが、ユーザーが知るようにロック画面にいくつかのメッセージが表示されます。私はDeviceAdminReceiverでこれをやっています。私は成功したパスワード提出でトーストすることができました。失敗したものではありません。失敗したパスワードの試行後にロック画面でトーストを表示する方法

import android.app.admin.DeviceAdminReceiver; 
import android.app.admin.DevicePolicyManager; 
import android.content.ComponentName; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 
import android.widget.Toast; 

public class AdminReceiver extends DeviceAdminReceiver { 

    @Override 
    public void onPasswordFailed(Context ctxt, Intent intent) { 
     Log.d("LockScreen", "onPasswordFailed"); 
     DevicePolicyManager mgr = (DevicePolicyManager) ctxt.getSystemService(Context.DEVICE_POLICY_SERVICE); 
     int no = mgr.getCurrentFailedPasswordAttempts(); 
     if (no >= 3) { 
      Log.d("LockScreen", "Failed 3 times"); 
      //Toast does not show 
      Toast.makeText(ctxt, R.string.password_failed, Toast.LENGTH_LONG) 
        .show(); 
     } 
    } 

    @Override 
    public void onPasswordSucceeded(Context ctxt, Intent intent) { 
     Toast.makeText(ctxt, R.string.password_success, Toast.LENGTH_LONG) 
       .show(); 
    } 
} 

答えて

0
import android.app.admin.DeviceAdminReceiver; 
    import android.app.admin.DevicePolicyManager; 
    import android.content.ComponentName; 
    import android.content.Context; 
    import android.content.Intent; 
    import android.util.Log; 
    import android.widget.Toast; 

    public class AdminReceiver extends DeviceAdminReceiver { 

     @Override 
     public void onPasswordFailed(Context ctxt, Intent intent) { 
      Log.d("LockScreen", "onPasswordFailed"); 
      DevicePolicyManager mgr = (DevicePolicyManager) ctxt.getSystemService(Context.DEVICE_POLICY_SERVICE); 
      int no = mgr.getCurrentFailedPasswordAttempts(); 
      if (no >= 3) { 
       Log.d("LockScreen", "Failed 3 times"); 
       //Toast does not show 
//ctxt is??     
//Toast.makeText(ctxt, R.string.password_failed, Toast.LENGTH_LONG) 
//      .show(); 
//try this 
Toast.makeText(getActivity(), "This is my Toast message!", 
    Toast.LENGTH_LONG).show();  
     } 
     } 

     @Override 
     public void onPasswordSucceeded(Context ctxt, Intent intent) { 
      Toast.makeText(ctxt, R.string.password_success, Toast.LENGTH_LONG) 
        .show(); 
     } 
    } 

この方法は、あなたのトーストをカスタマイズすることができます:あなたはtoast.theロック画面はトーストをカバーします表示したときに

あなたのトーストをカスタマイズ
LayoutInflater myInflater = LayoutInflater.from(this); 
View view = myInflater.inflate(R.layout.your_custom_layout, null); 
Toast mytoast = new Toast(this); 
mytoast.setView(view); 
mytoast.setDuration(Toast.LENGTH_LONG); 
mytoast.show(); 
+0

トーストのカスタマイズを可能にする方法は、DeviceAdminReceiverであることを行っていることでしょうか? – wolfclique

0

問題があります。それはまだ解錠されていないので解決することができます

  1. 通知を送信します。
  2. 透明なアクティビティを作成します。いくつかのカスタムビューでメッセージを表示します。あなたの活動に以下のフラグを追加してください。それを開始し、タイマーを3秒で殺すように設定します。

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON| 
        WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD| 
        WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED| 
        WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 
    
関連する問題