0

adb-command をブロードキャスト レシーバーにブロードキャストしようとしています。これは非常に単純な作業ですが、放送受信機には次の機能があります。

アンドロイド:エクスポートされた="偽"

公式の android.developer Web サイトには、次のように書かれています。

「false」の場合、ブロードキャスト レシーバーが受信できるメッセージは、同じアプリケーションのコンポーネントまたは同じユーザー ID を持つアプリケーションによって送信されたメッセージのみです。

そのため、ユーザー ID をブロードキャストに追加しようとしています。これまでの私のアプローチは、次の adb コマンドです。

> adb shell am broadcast -a com.example.action -n com.android.package/.receiverName --user "User_ID"

Error: Invalid int: "User_ID"Windowsでcmdに入ります。このアプリはシステム アプリです。より正確には、デフォルトの電話アプリです。Adb コマンドはデフォルトでシステム ブロードキャストだと思っていました。そのための私の質問は次のとおりです。ブロードキャストでユーザー ID を送信する方法や、エクスポートされていないアクションにアクセスする方法はありますか? マニフェストの User_ID と am ブロードキャストの User_ID に違いがあるのでしょうか。前もって感謝します

PS: 全員をルート化しなくても多くのデバイスで機能するはずなので、ルート アクセス権はありません。最終結果として、着信ビデオ通話を音声通話として受け入れたいと考えています。

4

1 に答える 1

0

まったく別のユーザーがいます。

Android Web サイトの最初の「ユーザー」は、root,system,u0_a58(10058) のような Linux システムのユーザー ID です。共有 UID 状態でない限り、すべての APK にはユーザー ID があります。

am コマンドの 2 番目の「ユーザー」は、この電話を使用するユーザー (管理者、ゲストなど) を表すユーザーです。
(Android タブでゲスト ユーザーを追加できますが、法的な理由により、Android フォンでは追加できません。)

答え: 非ルート シェルまたは 3 番目の APK から、エクスポートされていないコンポーネントにアクセスする方法はありません。

于 2015-12-03T05:48:44.783 に答える