0

ボタンがクリックされたときにアプリケーションで電話をロックしたい! 以下は私のコードです。

public class MainActivity extends Activity implements OnClickListener {

    Button b;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b = (Button) findViewById(R.id.button);

        b.setOnClickListener(this);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        switch (arg0.getId()) {
        case R.id.button:
        KeyguardManager km = (KeyguardManager) getSystemService(Activity.KEYGUARD_SERVICE);
            KeyguardLock kl = km.newKeyguardLock(KEYGUARD_SERVICE);
            kl.reenableKeyguard();


            break;
        }

    }

}

これは機能していません。onClick イベントで次のコードも試しました。

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
         wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
        wl.release();

これも機能していません。誰でも私を助けることができますか?

4

2 に答える 2

1

デバイス管理コンポーネントをセットアップしてから、 を呼び出す必要がlockNow()ありDevicePolicyManagerます。

このサンプル プロジェクトは、コーディングの観点から何が必要かを示しています。インストールが完了したら、ユーザーはアプリをデバイス管理者にすることに同意する必要があります。アプリがデバイス管理者でない場合、アクティビティはユーザーを設定アプリの適切な画面にルーティングします。

public class LockMeNowActivity extends Activity {
  private DevicePolicyManager mgr=null;
  private ComponentName cn=null;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);
    cn=new ComponentName(this, AdminReceiver.class);
    mgr=(DevicePolicyManager)getSystemService(DEVICE_POLICY_SERVICE);
  }

  public void lockMeNow(View v) {
    if (mgr.isAdminActive(cn)) {
      mgr.lockNow();
    }
    else {
      Intent intent=
          new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
      intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, cn);
      intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                      getString(R.string.device_admin_explanation));
      startActivity(intent);
    }
  }
}
于 2013-07-09T14:22:40.767 に答える
0

アクティビティの onCreate() メソッドで次のコードを使用して、 DevicePolicyManager を初期化します。

 myDevicePolicyManager = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
                mDeviceAdminSample = new ComponentName(Controller.this,
                        adminActivity.class);

デバイスをロックするには、ブール値の enable を設定してロックするために使用するイベントでコードを記述します。

if (enable) {
myDevicePolicyManager.lockNow();
}

デバイス管理者を有効にする必要がある場合があります。DevicePolicyManager インテントが呼び出され、ユーザーが有効にする必要があります。このコードに従ってください:

Intent myIntent = new   Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);  
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, securemeAdmin); 
于 2013-07-09T14:26:23.520 に答える