問題タブ [android-binder]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - SecurityException: 不適切なインターフェースへのバインダー呼び出し
エラー メッセージが表示されます:次のコードで「Binder 呼び出しが正しくないインターフェイスです」:
エラーはibta.getConnectionState(device)で発生します
それは私が前にやっていることです:
そして、これが .aidl でパッケージをセットアップする方法の階層です:
私が間違っていること。私はこの質問を読みました: SO-Question . しかし、私は自分が間違っていることを正確に知りませんでした。
android - BroadcastReceiver で Intent の起源を特定する
を送信したアプリケーションを特定する方法を探していますIntent
。現在、 を登録しBroadcastReceiver
て を使用しようとしていBinder.getCallingPid
ますが、通常はアプリの PID を返します。私が奇妙だと思うのは、通常の部分です.私のアプリは、Intent
.
への呼び出しを開始したアプリを正確に特定する方法はありBroadcastReceiver.onReceive
ますか?
android - Android システムが接続されたクライアントのリストを制限付きリモート サービスに管理する方法
Android Phone でシステムのリアルタイム分析を行うプロジェクトを行っています。特定の時点でリモート サービスにバインドされているクライアントの数を知りたいです。
例: LocationManager サービスにバインドされているクライアントの数。
これは、システム サービスに負荷をかけているアプリケーションを特定するのに役立ちます。また、システム サービスの記述が不適切なのか、システム サービスのクライアントの動作が不適切なのかを特定するのにも役立ちます。
例: 連絡先のコンテンツ プロバイダーを継続的にクエリ/更新/削除すると、システムは com.android.acore がより多くの CPU を消費していることを示していますが、実際には動作が悪いサード パーティ アプリであることがわかりました。
私はカスタム ROM に取り組んでおり、変更を行うためのコードにアクセスできます。
バインダーが参照カウントされ、Binder を参照する各 BinderProxy がその Binder への参照を構成することは知っていますが、コードでどのように行われるかはわかりません。
誰かがすでにそれについていくつかの研究を行っている場合は、あなたの知識を共有してください.
java - Android の失敗したバインダー トランザクションの回避策
この問題の実行可能な回避策が必要です。私はアンドロイドカメラを使って写真を撮ります。呼び出されるメソッドは onPictureTaken と呼ばれます。プログラムは、画像からバイト配列を取得し、それを別のクラスで待機しているインテントに戻すことになっています。
私の問題は、Failed Binder Transaction
エラーが発生することです。これは、データが大きすぎるためです。送信する前に圧縮する実行可能な方法はありますか?
**注、ビットマップを作成して圧縮するだけでよいことはわかっていますが、代わりに実際のバイト配列を送信するようにプログラムを作成する方法がはるかに望ましいです。
以下のコード:
さらに、一部の Android デバイスでのみこのエラーが発生します。たとえば、私の GS5 はこのエラーをスローしませんが、Moto X はスローします。デバイスでエラーがスローされないように、実行される圧縮が十分であることを確認する方法はありますか?
ありがとう!
java - Android - 「サービス リスト」と「dumpsys アクティビティ サービス」
これらのコマンドで表示されるサービスの違いは何ですか? 通常の Java クラスからサービスを開始し、それを「サービス リスト」に表示して、別のネイティブ プロセスからアクセスしてデータを共有できるようにするにはどうすればよいですか?
デバイスで実行されているネイティブ (C/C++ コード) バイナリがあり、Java で開始されたサービスに接続したいと考えています。バインダー インターフェイスを使用して、2 つの異なるネイティブ アプリケーション間で情報を共有しました。しかし、Javaに直接アクセスする方法はありますか? (JNI が機能しない可能性があります。これは、バイナリに他のアクセス許可があり、Java アプリの開始時にかなり前に実行されているためです。アプリがサービスを開始すると、ネイティブ コードが自動的に接続してデータの送信を開始します。)
ネイティブ コードがサービスを開始し、Java 部分が接続するコードがあります。ただし、この場合、ネイティブ部分でサービスを作成する権限がありません。しかし、すでに実行中のものに接続できます。
android - Android Binder IPC addService: サービスを再度削除する方法はありますか?
私は非常に限られた権限しか持っていないコードのどこかにいますが、データを外部の Android アプリケーションに送信する必要があります。(Android システム C コード) 明らかに、そこでバインダー サービスを開始することはできませんが、既に実行中のサービスに接続することはできます。したがって、私の実装では、サービスが利用可能かどうかを毎秒チェックし、利用可能な場合は接続してデータの送信を開始します。これはうまくいきます。
私の問題は次のとおりです。サービスのバイナリ/プロセスを強制終了すると、クライアントは、サービスが利用できなくなったことを何らかの形で認識しません。を使用して追加したサービスを削除する方法はありaddService(...)
ますか? クライアントはそうしますgetService()
。