Android DevicePolicyManager lockNow()

时间:2011-07-03 00:46:58

标签: java android sms

我是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();
    }

}

我查看http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.html作为参考示例。

任何人都可以帮助我吗?告诉我我的代码有什么问题?我是否必须调整某些内容才能在模拟器或设备上启用管理权限?

谢谢!

1 个答案:

答案 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示例:

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/os/SmsMessageReceiver.html