我是Android开发的新手,这就是我撞墙的原因。我希望应用程序作为服务运行,并监视SMS。如果收到特定的SMS消息,它将锁定电话(就像锁定期限已过期一样)。有点像遥控锁。
我使用DevicePolicyManager
来调用lockNow()
方法。但是,它会在调用lockNow()
部分时触发错误。
以下是活动的示例代码:
public class SMSMessagingActivity extends Activity {
/** Called when the activity is first created. */
public static DevicePolicyManager mDPM;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
}
public static void LockNow(){
mDPM.lockNow();
}
}
任何人都可以帮助我吗?告诉我我的代码有什么问题?我是否必须调整某些内容才能在模拟器或设备上启用管理权限?
谢谢!
答案 0 :(得分:3)
以下是文档中的内容:
呼叫设备管理员必须已请求USES_POLICY_FORCE_LOCK才能调用此方法;如果没有,则会抛出安全异常。
因此,您应该在oncreate中执行以下操作:
ComponentName devAdminReceiver; // this would have been declared in your class body
// then in your onCreate
mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
devAdminReceiver = new ComponentName(context, deviceAdminReceiver.class);
//then in your onResume
boolean admin = mDPM.isAdminActive(devAdminReceiver);
if (admin)
mDPM.lockNow();
else Log.i(tag,"Not an admin");
在旁注中,您的示例代码是一项活动 那,你应该只使用广播接收器来实现所有内容并监控短信。
以下是接收短信的API示例: