web-dev-qa-db-ja.com

Android=

私の知る限り、アプリは独自のアンインストールの意図を得ることができません。

しかし Dolphin Browserはどのようにして「削除された」イベントを受信し、添付の画像のようにブラウザを起動しますか

enter image description here

ADB:
        10-20 12:37:00.997: D/BackupManagerService(527): Received broadcast Intent { act=Android.intent.action.PACKAGE_REMOVED dat=package:mobi.mgeek.TunnyBrowser flg=0x8000010 (has extras) }
    10-20 12:37:00.997: V/BackupManagerService(527): removePackageParticipantsLocked: uid=10112 #1
    10-20 12:37:01.007: D/dalvikvm(527): GC_EXPLICIT freed 2247K, 12% free 20128K/22868K, paused 3ms+10ms, total 212ms
    10-20 12:37:01.107: D/dalvikvm(527): GC_FOR_ALLOC freed 1508K, 15% free 19649K/22868K, paused 60ms, total 60ms
    10-20 12:37:01.137: D/AndroidRuntime(4028): Calling main entry com.Android.commands.am.Am
    10-20 12:37:01.137: D/dalvikvm(4028): Note: class Landroid/app/ActivityManagerNative; has 163 unimplemented (abstract) methods
    10-20 12:37:01.147: I/ActivityManager(527): START u0 {act=Android.intent.action.VIEW dat=http://survey.dolphin.com/int/uninstall?id=014f4d1981d6f88bb56630e7a3a7550a&pn=mobi.mgeek.TunnyBrowser&v=248&s=ofw&it=1382250136565&ut=1382250127000&m=Nexus 4&os=Android&osv=4.3&cc=US&no=40471&lang=en&jk=uninstalled&ft=212&ht=957&ct=0&nt=1&res=768*1184&ifi=1&lts=1&iow=0&iom=0&iospd=0&iogs=0&debug=false&t=1382252820000 flg=0x10000000 cmp=com.Android.chrome/com.google.Android.apps.chrome.Main} from pid 4028
    10-20 12:37:01.157: D/AndroidRuntime(4028): Shutting down VM
20
NitZRobotKoder

自分のアプリのアンインストールイベントを取得する方法は次のとおりです。

ネイティブコードでのinotifyの使用。例:_inotify_add_watch_を使用して、アプリケーションのデータキャッシュフォルダーを監視できます:_/data/data/your-package-name/cache_。
アプリケーションがアンインストールされると、フォルダーの削除イベントを取得できます。

もう1つの重要な点は、inotifyを独自のアプリケーションとは別のプロセスで実行する必要があることです。
これを行うには、fork()を呼び出すことができます。

私はすでにロジックを検証しました。 :)

8
aarontang

これはAndroidのセキュリティ問題で、すでにGoogleチームに報告されており、Android 4.4。で修正されています。これがどのように機能するか 説明 です)。

3