[英]devicePolicyManager.lockNow() is not working for Motorola Tablets
public final static void lockDevice()
{
try
{
if (devicePolicyManager.isAdminActive(adminComponent))
{
devicePolicyManager.lockNow();
}
}
catch (final Exception ex)
{
...
}
}
上面的代码不会抛出任何异常,也不会只锁定摩托罗拉 xoom 平板电脑的屏幕。 (Homeycomb 和 Icecream Sandwitch)相同的代码在其他 Homeycomb 和 ICS 平板电脑上完美运行。
我用谷歌搜索,但没有得到任何解决方案。 有任何想法吗.....?
此问题的可能原因
1) 我认为您的 AndroidManifest.xml 中接收者的元数据存在一些问题
2) 您没有将正确的类(用 DeviceAdminReceiver 扩展)添加到 adminComponent 或 android:name 接收器的属性。
在花了很多时间之后,我已经创建了代码。
主要活动的代码
public class LockerTest extends Activity {
protected static final int REQUEST_ENABLE = 0;
DevicePolicyManager devicePolicyManager;
ComponentName adminComponent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.btn);
button.setOnClickListener(btnListener);
}
Button.OnClickListener btnListener = new Button.OnClickListener() {
public void onClick(View v) {
adminComponent = new ComponentName(LockerTest.this, Darclass.class);
devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
if (!devicePolicyManager.isAdminActive(adminComponent)) {
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, adminComponent);
startActivityForResult(intent, REQUEST_ENABLE);
} else {
devicePolicyManager.lockNow();
}
}
};
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (REQUEST_ENABLE == requestCode) {
super.onActivityResult(requestCode, resultCode, data);
}
}
}
创建一个新类——Darclass——代码
import android.app.admin.DeviceAdminReceiver;
public class Darclass extends DeviceAdminReceiver{
}
在“res”中创建一个文件夹“xml”。 然后在“xml”文件夹中创建 my_admin.xml 文件。 my_admin.xml 的代码。 注意在</activity>
和</application>
之前添加这个接收器
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<uses-policies>
<limit-password />
<watch-login />
<reset-password />
<force-lock />
<wipe-data />
</uses-policies>
</device-admin>
最后将下面给出的接收器添加到您的 AndroidManifest.xml
<receiver
android:name=".Darclass"
android:permission="android.permission.BIND_DEVICE_ADMIN" >
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/my_admin" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
它应该适用于您的设备。
您需要做 3 件事:
<receiver>
添加到 AndroidManifest<device-admin>
创建新的 xml 文件DeviceAdminReceiver
创建新的 .kt 文件这是我做的 Kotlin 答案(使用代码): stackoverflow.com
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.