実機で動作確認すべく

諸々確認。
とりあえず、ICS だと system settings から SYSTEM の Developer options という項目に USB debugging な選択ができるようになっています。また、USB 接続時点では認識できていないですね。udev を云々するんだっけ。
あ、もっかい lsusb したら出た。契機は何だか分からない。

Bus 002 Device 097: ID 12d1:1038 Huawei Technologies Co., Ltd. Ideos (debug mode)

以下が /etc/udev/rules.d/51-android.rules に以下を云々と Using Hardware Devices に書いてあるな。

UBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666", GROUP="plugdev" 

ちなみに /etc/groups 確認してみたらデフォで plugdev に追加されてました。

plugdev:x:46:rms

とりあえず eclipse で認識できてるか確認を。ついでにサンプルで lockNow() してみるか。てオチますな。しかも Unable to open log device とか出力されてます。
ググッたら以下が hit。ヤッてみます。

電話番号をナニしてみたら Testing というソレが出てきて

  • ProjectMenu
  • 3. Background setting
  • 2. Log setting
  • Log switch

から LOG on にしてみました。他にも色々設定項目がある模様。*#*#2846579#*#* ですか。HUAWEI 恐ろしや。とは言え、この状態で LogCat への出力はありません。

現状

今んとこ、以下の実装でボタン押すとオチます。

import android.app.Activity;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class LockNowTestActivity extends Activity {
	private DevicePolicyManager mDPM;
	private Button button;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
        button = (Button)findViewById(R.id.button);
        button.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				mDPM.lockNow();
			}
        	
        });
    }
}

いやはや。

続き

以下を発見

設定して restart してみる。ICS は restart というソレがあるんですね。再起動して動かしてみたら例外なソレが LogCat に出ました。HUAWEI アレ杉。
で、中身なんですが、

java.lang.SecurityException: No active admin owned by (ry

とのこと。もう少し色々確認する必要ありそげ。

追記

DeviceAdminSample.java にて以下なナニを発見。おそらくこれですな。解除なソレも用意する必要があるのかどうなのか。でも手元にあるアプリだとこんなことしてないはずなので lockNow() 使うのはおそらくダウト。

                        // Launch the activity to have the user enable our admin.
                        Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
                        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);
                        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                                mActivity.getString(R.string.add_admin_extra_app_text));
                        startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN);

別の方法を確認せねば、なのか。