Android 做一些常规任务?

Android 做一些常规任务?,android,hook,Android,Hook,我想知道是否有以下可能: 我有一个应用程序(服务)留在后台,每当用户需要时就会被触发 添加/删除/更新联系人 安装/卸载应用程序 在FS上添加/删除/重命名文件 你们认为这可能吗,伙计们?(当然,如果可以通过黑客和肮脏的东西来做到这一点,我会通过适当的方式) 我试图浏览一下互联网,但没有找到与这一点相关的讨论 你猜怎么着?我自己也没试过,但是: 似乎要处理检测联系人数据更改的问题。基本上,您需要注册一个ContentObserver,并处理通知您的更改 签出-从中,您可以注册一个Broadc

我想知道是否有以下可能:

我有一个应用程序(服务)留在后台,每当用户需要时就会被触发

  • 添加/删除/更新联系人
  • 安装/卸载应用程序
  • 在FS上添加/删除/重命名文件
你们认为这可能吗,伙计们?(当然,如果可以通过黑客和肮脏的东西来做到这一点,我会通过适当的方式)

我试图浏览一下互联网,但没有找到与这一点相关的讨论


你猜怎么着?

我自己也没试过,但是:

似乎要处理检测联系人数据更改的问题。基本上,您需要注册一个
ContentObserver
,并处理通知您的更改

签出-从中,您可以注册一个BroadcastReceiver,以收到正在安装或卸载的应用程序的通知。查找添加的
ACTION\u PACKAGE\u和删除的
ACTION\u PACKAGE\u


有关如何检测文件系统中的文件何时更改,请参阅。我不确定,您可能仅限于使用FileObserver的沙箱。此外-重命名似乎没有明确通知,但您可能会在SDK 5+版的SDK示例中发现,从
移动到
,或者可能从
删除
然后创建
中检测到重命名:

     /**
     * Retrieves the contact information.
     */
    @Override
    public ContactInfo loadContact(ContentResolver contentResolver, Uri contactUri) {
        ContactInfo contactInfo = new ContactInfo();
        long contactId = -1;

        // Load the display name for the specified person
        Cursor cursor = contentResolver.query(contactUri,
                new String[]{Contacts._ID, Contacts.DISPLAY_NAME}, null, null, null);
        try {
            if (cursor.moveToFirst()) {
                contactId = cursor.getLong(0);
                contactInfo.setDisplayName(cursor.getString(1));
            }
        } finally {
            cursor.close();
        }

        // Load the phone number (if any).
        cursor = contentResolver.query(Phone.CONTENT_URI,
                new String[]{Phone.NUMBER},
                Phone.CONTACT_ID + "=" + contactId, null, Phone.IS_SUPER_PRIMARY + " DESC");
        try {
            if (cursor.moveToFirst()) {
                contactInfo.setPhoneNumber(cursor.getString(0));
            }
        } finally {
            cursor.close();
        }

        return contactInfo;
    }

您可以使用
Cursor Cursor=contentResolver.query(contactUri,新字符串[]{Contacts.\u ID,Contacts.DISPLAY\u NAME},null,null)指定要检索的联系人列列名在中描述,查看示例,似乎是
cursor.getLong(0)
这是您要查找的联系人ID。它似乎也不稳定,这取决于联系人的编辑方式和其他联系人的添加方式,但您也在捕获这些联系人,因此您应该能够处理这些情况。

Wow:直截了当!非常感谢你。没有评论:)没有问题。值得指出的是,您实际上无法以任何方式阻止或影响这些操作,因此它并不是传统意义上的钩子-它只是一个通知。很公平,我不需要更多,一个简单的通知就是完美的:)。再次感谢你;)你知道在监视联系人的情况下,这是否允许获取受影响联系人的标识符?谢谢你!多亏了你,我想我现在已经拥有了我所需要的一切。问候