3

この回答dpmは、Android アプリが次のように実行できることを示唆しています。

Runtime.getRuntime().exec("dpm set-device-owner com.test.my_device_owner_app");

これは、5.1.1 を実行している Nexus 4 でサイレントに失敗します。シェルはエラー コード 0 (成功) を返し、コンソール出力はありません。明らかな成功にもかかわらず、私のアプリはデバイスの所有者になりません。デバイスは出荷時設定にリセットされたばかりで、ユーザー アカウントは構成されていません。

コントロールとして、の代わりにガベージコマンドを実行してみましたdpm。期待どおりに失敗します。

これはうまくいきましたか?意図的に弱体化されたのですか?

4

2 に答える 2

1

dpmコマンド構文が間違っていると、ステータス コード 0 で誤って終了します。正しい構文はdpm set-device-owner package/.ComponentName. 正しい構文を取得すると、次のものexec(...)がスローされSecurityExceptionます。

java.lang.SecurityException: Neither user 10086 nor current process has android.permission.MANAGE_DEVICE_ADMINS.
  at android.os.Parcel.readException(Parcel.java:1546)
  at android.os.Parcel.readException(Parcel.java:1499)
  at android.app.admin.IDevicePolicyManager$Stub$Proxy.setActiveAdmin(IDevicePolicyManager.java:2993)
  at com.android.commands.dpm.Dpm.runSetDeviceOwner(Dpm.java:110)
  at com.android.commands.dpm.Dpm.onRun(Dpm.java:82)
  at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)
  at com.android.commands.dpm.Dpm.main(Dpm.java:38)
  at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
  at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:249)

この権限をマニフェストに追加しても役に立たないため、システムのみの権限である可能性があります。

キオスク モード アプリを NFC のないデバイスに展開するのは、すでに面倒なことです。開発者モードを有効にして、 経由でアプリをインストールする必要があるためですadbdpmプロビジョナーは手動で実行する必要があると思います。

于 2015-06-05T20:37:33.037 に答える