2013年2月15日 星期五

Turn screen off


Possible reasons for this problem
1) I think there is some problem with receiver's meta-data in your AndroidManifest.xml
2) You haven't added the correct class(extended with DeviceAdminReceiver) to either adminComponent OR to android:name property of receiver.
After spending lot of time on this i have created the code.

Code for main Activity
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);
}
}

}

Create a new class - Darclass - code
import android.app.admin.DeviceAdminReceiver;

public class Darclass extends DeviceAdminReceiver{

}

Create a folder 'xml' in 'res'. Then create my_admin.xml file in 'xml' folder. Code for my_admin.xml. Note add this receiver after </activity> and before </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>

Finally add the receiver given bellow to your 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>
It should work on your device.
share|improve this answer

沒有留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...