web-dev-qa-db-ja.com

アプリをアンインストールする前にアクティビティを表示する方法(Android)

それは不可能でしたが、[アンインストール]をクリックした後、PackageUninstallerが呼び出される前に、NQ MobileSecurityがメッセージを表示できることに気付きました。この動作をアプリで再現したいと思います。

ここで提案されているように、「Android.intent.action.DELETE」インテントをリッスンしているアクティビティで試してみました: アプリがデバイスからアンインストールされていることを確認する方法...?

しかし、アプリをアンインストールしようとすると、チューザーがポップアップして、アプリケーションまたはパッケージアンインストーラーを選択するように求めます。どうすればこれを回避できますか?

アプリケーションのUNINSTALLイベントをインターセプトする別の方法はありますか? (不可能であると答える前に、NQ Mobile Securityをアンインストールして、何が起こるかを確認してください。私のAndroid 2.3.4では、セキュリティアプリ)。

21
robsf

[アンインストール]をクリックした後、PackageUninstallerが呼び出される前に、NQ MobileSecurityがメッセージを表示できることに気付きました。

彼らはAndroidのセキュリティ上の欠陥を悪用しているに違いありません。私はそれを調査し、それを修正できるかどうかを確認します。アプリは、アンインストール時に制御を取得することは想定されていません。

これを指摘してくれてありがとう!

アプリケーションのUNINSTALLイベントをインターセプトする別の方法はありますか?

私は確かにそうしないことを望みます。

29
CommonsWare

Opera Maxは、同様のことを行うアプリです。アンインストールすると、ウェブページが開きます。

彼らはこれをどのように行うのですか?

ネイティブコードからlibeventを使用することにより、削除される/data/data/com.opera.maxディレクトリを監視し、古き良きaction.VIEWブロードキャストを投稿します。

アプリをインストールして実行し、ルート化されたデバイスでadbShellから/data/data/com.opera.maxディレクトリを削除します

更新:どのように機能するかを示すサンプルアプリを作成しました。ところで、最近では動作しません(KitKat +だと思います)Androidバージョン: https://github.com/pelotasplus/ActionAfterUninstall

6
pelotasplus

彼らは、ユーザーが無意識のうちに彼らに与えている非常に重要な許可を求めている可能性があります。このアプリの[権限]タブを確認してください(2012年6月15日現在): https://play.google.com/store/apps/details?id=com.nqmobile.antivirus20&hl=en

このアプリが取得する権限のリストは、実に身も凍るようなものです。とりわけ:

システムツールが実行中のアプリを取得するアプリが現在および最近実行中のタスクに関する情報を取得できるようにします。悪意のあるアプリは、他のアプリに関する個人情報を発見する可能性があります。

ネットワーク設定とトラフィックの変更/インターセプトアプリがネットワーク設定を変更し、すべてのネットワークトラフィックをインターセプトして検査できるようにします。たとえば、APNのプロキシとポートを変更します。悪意のあるアプリは、知らないうちにネットワークパケットを監視、リダイレクト、または変更する可能性があります。

タブレットの睡眠を防ぐ電話の睡眠を防ぐアプリがタブレットのスリープを防ぐことができます。アプリが電話がスリープ状態になるのを防ぐことを許可します。

UI設定の変更ロケールや全体的なフォントサイズなど、アプリが現在の構成を変更できるようにします。グローバルシステム設定の変更アプリがシステムの設定データを変更できるようにします。悪意のあるアプリは、システムの構成を破壊する可能性があります。

システムレベルのアラートの表示アプリがシステムアラートウィンドウを表示できるようにします。悪意のあるアプリが画面全体を占有する可能性があります。

ファイルシステムのマウントとアンマウントアプリがリムーバブルストレージのファイルシステムをマウントおよびアンマウントできるようにします。

CHANGE NETWORKCONNECTIVITYアプリがネットワーク接続の状態を変更できるようにします。

WI-FI状態の変更アプリがWi-Fiアクセスポイントに接続および切断したり、構成されたWi-Fiネットワークに変更を加えたりできるようにします。

-更新-

また、Android Package Managerは、要求された場合にパッケージを削除するだけであることがわかりました。only実行する前に実行することを確認します。削除するパッケージが現在アクティブなデバイス管理者として登録されているかどうかを確認します。

    try {
        if (dpm != null && dpm.packageHasActiveAdmins(packageName)) {
            Slog.w(TAG, "Not removing package " + packageName + ": has active device admin");
            return PackageManager.DELETE_FAILED_DEVICE_POLICY_MANAGER;
        }
    } catch (RemoteException e) {
    }

AOSPソースのPackageManagerServiceの6900行目を参照してください ここ

このため、アプリケーションはユーザーがデバイス管理者として明示的に登録する必要があります。ここでデバイス管理に関する注意事項を参照してください: http://developer.Android.com/training/enterprise/device-management-policy.html

3
scorpiodawg

アクティビティマネージャーがPackageUninstallerを呼び出したときに、彼らがLogCatを監視して傍受していることは間違いありません。彼らはタスクを殺し、独自のアクティビティを開始すると思います。それはかなり賢いですが、それは間違いなくAndroidのセキュリティホールを悪用しています。

3
robsf

https://stackoverflow.com/a/26829978/1317564 に従って、これを行うサンプルコードを次に示します。 https://github.com/zzljob/Android-uninstall-フィードバック/blob/master/library/jni/feedback-uninstall.c 。これは実際にはアンインストールの実行を停止しませんが、それをキャッチして何らかのアクションを実行する方法を提供します。これがAndroidで機能し、チームが最近のリリースでギャップを埋めた可能性があることに正直驚いています。

0
Learn OpenGL ES