我已經給我的應用程序的管理權限,現在我想監視沒有。使用DeviceAdminReceiver或BoradcastReceiver嘗試密碼嘗試失敗。有人可以提供代碼或幫助嗎? 另外,我應該在哪裏計算不。失敗的嘗試?在廣播課還是在接收課?請詳細解釋一下,如果可以的話。謝謝!如何計算no。密碼嘗試失敗並在密碼失敗時啓動另一項活動?
我的代碼:
MainActivity.java
包com.bew.locksmith;
import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
int counter=0;
public int attempts=0;
private static final int ADMIN_INTENT = 15;
private static final String description = "Sample Administrator description";
public static final String ACTION_PASSWORD_FAILED= "android.app.action.ACTION_PASSWORD_FAILED";
private DevicePolicyManager mDevicePolicyManager, mDevicePolicyManager2;
private ComponentName mComponentName,mComponentName2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDevicePolicyManager = (DevicePolicyManager)getSystemService(
Context.DEVICE_POLICY_SERVICE);
mComponentName = new ComponentName(this, MyAdminReceiver.class); //MyadminReciever changed here
Button btnEnableAdmin = (Button) findViewById(R.id.btnEnable);
Button btnDisableAdmin = (Button) findViewById(R.id.btnDisable);
Button btnLock = (Button) findViewById(R.id.btnLock);
btnEnableAdmin.setOnClickListener(this);
btnDisableAdmin.setOnClickListener(this);
btnLock.setOnClickListener(this);
/* mDevicePolicyManager2 = (DevicePolicyManager)getSystemService(
Context.); */
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnEnable:
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mComponentName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,description);
startActivityForResult(intent, ADMIN_INTENT);
break;
case R.id.btnDisable:
mDevicePolicyManager.removeActiveAdmin(mComponentName);
Toast.makeText(getApplicationContext(), "Admin registration removed", Toast.LENGTH_SHORT).show();
break;
case R.id.btnLock:
boolean isAdmin = mDevicePolicyManager.isAdminActive(mComponentName);
if (isAdmin) {
mDevicePolicyManager.lockNow();
}else{
Toast.makeText(getApplicationContext(), "Not Registered as admin", Toast.LENGTH_SHORT).show();
}
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == ADMIN_INTENT) {
if (resultCode == RESULT_OK) {
Toast.makeText(getApplicationContext(), "Registered As Admin", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(), "Failed to register as Admin", Toast.LENGTH_SHORT).show();
}
}
}
}
MyAdminReceiver.java
package com.bew.locksmith;
import android.app.admin.DeviceAdminReceiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.widget.Toast;
public class MyAdminReceiver extends DeviceAdminReceiver{
private static final String KEY_ATTEMPTS_NO = "attempts_no";
private static final int LIMIT = 3;
@Override
public void onPasswordFailed(Context context, Intent intent) {
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
int attempts = sharedPrefs.getInt(KEY_ATTEMPTS_NO, 0) + 1;
if (attempts == LIMIT) {
// Reset the counter
sharedPrefs.edit().putInt(KEY_ATTEMPTS_NO, 0).apply();
// Launch your activity
context.startActivity(new Intent(context, test.class));
Toast.makeText(context, "start activity", Toast.LENGTH_LONG).show();
} else {
// Save the new attempts number
sharedPrefs.edit().putInt(KEY_ATTEMPTS_NO, attempts).apply();
}
}
@Override
public void onPasswordSucceeded(Context context, Intent intent) {
// Reset number of attempts
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
sharedPrefs.edit().putInt(KEY_ATTEMPTS_NO, 0).apply();
}
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
// TODO Auto-generated method stub
Toast.makeText(arg0, "here", Toast.LENGTH_LONG).show();
/*Intent i = new Intent();
i.setClassName("com.bew.locksmith","com.bew.locksmith.test");
arg0.startActivity(i);*/
//String action = arg1.getAction();
}
}
test.java
package com.bew.locksmith;
import android.app.Activity;
import android.app.admin.DeviceAdminReceiver;
import android.content.Context;
import android.content.Intent;
import android.hardware.Camera;
import android.os.Bundle;
import android.widget.Toast;
public class test extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
}
}
清單:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bew.locksmith"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.CAMERA"/>
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.bew.locksmith.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:name="MyAdminReceiver"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/admin"/>
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
<activity
android:name="com.bew.locksmith.test"
android:label="@string/app_name" >
<category android:name="android.intent.category.DEFAULT" />
</activity>
</application>
</manifest>
更新:添加了我的代碼,現在刪除那個-1,誰做了那個!
爲了記錄在案,如果有誰在乎我還沒有得到任何解決方案,所以謝謝你的StackOverflow,非常感謝用戶@commonsware還有兩個我不能標籤的人,因爲這樣不允許我。 –