実機で動作確認すべく
諸々確認。
とりあえず、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);
別の方法を確認せねば、なのか。