我如何以编程方式锁定我的安卓手机?我试着按照这个例子。但是当我点击启用按钮时,活动会弹出几毫秒,然后自动关闭
日志仅显示此日志没有错误
Log.i("DeviceAdminSample", "Admin enable FAILED!");
谁能告诉我如何锁定安卓屏幕(就像在多次尝试模式锁定和手机锁定时锁定)
任何帮助表示赞赏
我如何以编程方式锁定我的安卓手机?我试着按照这个例子。但是当我点击启用按钮时,活动会弹出几毫秒,然后自动关闭
日志仅显示此日志没有错误
Log.i("DeviceAdminSample", "Admin enable FAILED!");
谁能告诉我如何锁定安卓屏幕(就像在多次尝试模式锁定和手机锁定时锁定)
任何帮助表示赞赏
你必须让你的应用程序成为管理员,在这里阅读一些东西
创建一个新的空项目并创建一个像这样MyAdminReceiver
扩展的类DeviceAdminReceiver
import android.app.admin.DeviceAdminReceiver;
public class MyAdminReceiver extends DeviceAdminReceiver{
}
创建一个名为 xml 的新文件夹并为您的管理员权限创建一个 .xml 文件admin.xml
并添加策略,以防它锁定屏幕
<device-admin xmlns:android="http://schemas.android.com/apk/res/android" >
<uses-policies>
<force-lock />
</uses-policies>
</device-admin>
在您的清单中添加应用程序标签下的接收器
<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>
在你MainActivity.java
添加这样的代码
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 {
private static final int ADMIN_INTENT = 15;
private static final String description = "Some Description About Your Admin";
private DevicePolicyManager mDevicePolicyManager;
private ComponentName mComponentName;
@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);
Button btnEnableAdmin = (Button) findViewById(R.id.btnEnableAdmin);
Button btnDisableAdmin = (Button) findViewById(R.id.btnDisableAdmin);
Button btnLock = (Button) findViewById(R.id.btnLock);
btnEnableAdmin.setOnClickListener(this);
btnDisableAdmin.setOnClickListener(this);
btnLock.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnEnableAdmin:
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.btnDisableAdmin:
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();
}
}
}
}
注意:如果您尝试从 Activity 子类调用 Intent for Admin Device,则可能会出现使用错误,Intent.FLAG_ACTIVITY_NEW_TASK
但是当您使用它时,您的窗口可能不会像您的情况那样弹出,因此请尝试从 Activity 的子类打开它仅一项活动
此外,除非尚未取消注册为管理员,否则您无法卸载您的应用程序
但是当我点击启用按钮时,活动会弹出几毫秒,然后自动关闭
该示例中显示的代码将在单击时显示“设置”应用程序。
谁能告诉我如何锁定android屏幕
您使用链接到的代码。这是我的示例应用程序,显示了相同的基本内容。
具体来说:
您需要BroadcastReceiver
在清单中设置一个设备管理组件
用户必须以设备管理员身份激活您的应用
lockNow()
然后你打电话DevicePolicyManager
这是有关设备管理 API 的开发人员文档。