ここに初めて投稿します。私はこれがこの質問をする適切な場所であるかどうかはわかりませんが、私は他のより適切な場所を見つけるようには思われません。とにかく私の質問です。タスクマネージャーのActivityManager.forceStopPackage()
私はAPI ActivityManager.forceStopPackage()
が内部のものであり、システムプロセスからのみ呼び出すことができると私は理解します。しかし、それは私のモトローラのatrix携帯電話に内蔵のタスクマネージャーアプリ(パッケージ名com.motorola.PerformanceManager
)がシステムプロセスではなく直接呼び出すことができます。私が確認したことは2つあります。
まず、それはps
コマンドから非システムプロセスです:
app_64 13681 1379 170788 29820 ffffffff 00000000 S com.motorola.PerformanceManager
第二に、それは確かにそのODEXファイル(その後、DEXに、smaliに逆コンパイルして、Javaの中)からActivityManager.forceStopPackage()
APIを呼び出します。 smaliコードから、このAPIを呼び出すことはすでに明らかです。
また、私にとって特別なものではないようなAndroidManifest.xml
ファイルも確認しました(このフォーラムは誤ってコンテンツをURLとして認識し、投稿できないようにしています)。
マニフェストファイルには、システムとして想定されているandroid.permission.FORCE_STOP_PACKAGES
権限が含まれています。システム以外のアプリでも、この権限でも権限拒否エラーが発生します。私はandroid.permission.FORCE_STOP_PACKAGES
権限でこのAPIにアクセスするためにリフレクションを使用しようとしましたが、ランタイムエラーが発生します。
ここで、ビルトインのタスクマネージャーアプリケーションは、システムプロセスではなく内部APIをどのように呼び出すことができますか。 アプリが同じプラットフォーム秘密鍵で署名されている可能性があります。しかし、私はそれをどのように確認できるか分かりません。さらに、それはまだマニフェストファイルに追加の記述があるシステムプロセスであると考えられます。
誰かが私の質問に答えることを願っています。ありがとう。
私のような同じ問題があります:java.lang.SecurityException:許可拒否: \t \t forceStopPackageを()のpid = 20914から、UID = 10073 Android要件.permission.FORCE_STOP_PACKAGES ,,,この問題を解決するために私を助けてください –