0

プログラムでイベント インジェクターのアクセス許可を設定するにはどうすればよいですか? 「送信」キーをシミュレートして、着信コールに自動的に応答しようとしています。シミュレーターではイベント インジェクターは完全に機能しますが、実際のデバイスでコードを実行すると機能しません。

4

2 に答える 2

4

RIM API では、プログラムで許可を設定することはできません。権限のリクエストのみが可能で、権限リクエスト画面を表示し、ユーザーは権限を手動で設定する必要があります。

これに対する回避策はなく、セキュリティ対策です。そうしないと、悪意のあるソフトウェアが任意のアクセス許可を設定し、必要なことを何でも実行する可能性があります。

于 2012-08-24T06:06:46.680 に答える
1

このようなものは、アクセス許可をチェックし (アプリが既に実行されていて、ユーザーが既にアクセス許可を受け入れている場合)、まだ受け入れられていない場合は要求します。アプリが他に行うことによっては、リクエストのみが必要な場合がありますPERMISSION_INPUT_SIMULATION。以下の私のコードは、他のいくつかの権限も示しています。

   /** @return true if the user has accepted permissions requests */
   public boolean hasPermissions() {
      ApplicationPermissionsManager apm = ApplicationPermissionsManager.getInstance();
      ApplicationPermissions original = apm.getApplicationPermissions();

      if ((original.getPermission(ApplicationPermissions.PERMISSION_INPUT_SIMULATION) == ApplicationPermissions.VALUE_ALLOW)
              && (original.getPermission(ApplicationPermissions.PERMISSION_DEVICE_SETTINGS) == ApplicationPermissions.VALUE_ALLOW)
              && (original.getPermission(ApplicationPermissions.PERMISSION_CROSS_APPLICATION_COMMUNICATION) == ApplicationPermissions.VALUE_ALLOW)
              && (original.getPermission(ApplicationPermissions.PERMISSION_INTERNET) == ApplicationPermissions.VALUE_ALLOW)
              && (original.getPermission(ApplicationPermissions.PERMISSION_SERVER_NETWORK) == ApplicationPermissions.VALUE_ALLOW))
      {
         return true;
      } else {
         return false;
      } 
   }

   /** @return true if the user has accepted / granted permissions */
   public boolean checkPermissions() {
      if (!hasPermissions()) {
         ApplicationPermissions permRequest = new ApplicationPermissions();
         permRequest.addPermission(ApplicationPermissions.PERMISSION_INPUT_SIMULATION);
         permRequest.addPermission(ApplicationPermissions.PERMISSION_DEVICE_SETTINGS);
         permRequest.addPermission(ApplicationPermissions.PERMISSION_CROSS_APPLICATION_COMMUNICATION);
         permRequest.addPermission(ApplicationPermissions.PERMISSION_INTERNET);
         permRequest.addPermission(ApplicationPermissions.PERMISSION_SERVER_NETWORK);
         return ApplicationPermissionsManager.getInstance().invokePermissionsRequest(permRequest);
      } else {
         return true;
      }
   }
于 2012-08-24T21:17:57.557 に答える