2011-01-24 1 views
2

が可能です:私は、バックグラウンドにとどまるアプリ(サービス)をしましたいくつかの定期的なタスクをフックしますか?以下の場合、私は思ったんだけど

、およびユーザー追加は、/ /を削除

  • 連絡先を更新するたびにトリガされます
  • をインストール/あなたはこれが可能である男のアプリ
  • 追加/削除/ FS

上のファイルの名前を変更すると思いますかアンインストールしますか? (適切な方法で、ハッキングや汚れたものを渡すことができれば)

私はインターネットを少し見てみましたが、この点に関するディスカッションは見つかりませんでした。

あなたの推測は?

答えて

3

はこの自分自身のいずれかを試みたが、なかったの:

http://mylifewithandroid.blogspot.com/2008/03/observing-content.htmlは、連絡先データの変化を検出して対処するようです。基本的にはContentObserverを登録し、通知された変更を処理する必要があります。

http://developer.android.com/reference/android/content/Intent.htmlを確認してください。ブロードキャスト受信者を登録して、インストールまたはアンインストールするアプリケーションの通知を受けることができます。 ACTION_PACKAGE_ADDEDACTION_PACKAGE_REMOVED

ファイルシステムでファイルが変更されたときの検出方法については、How to detect file or folder changes in Android?を参照してください。 FileObserverを使用してサンドボックスに限定されているかもしれませんが、わかりません。また、 - 名前の変更は、明示的に通知されていないようですが、あなたはおそらく5+ SDKバージョンのSDKサンプルで発見CREATE

+0

うわー:まっすぐに穴に!どうもありがとうございました。コメントはありません:) – CoolStraw

+0

probsはありません。実際には、これらの操作を何らかの形で妨げたり影響を与えたりすることは実際にはできないということを指摘しておく価値があります。伝統的な意味でのフックではありません。 – RivieraKid

+0

十分に公正で、私はそれ以上のものを必要としません、単純な通知はちょうど完璧です:)。ありがとうございました;) – CoolStraw

1

が続く可能性がDELETEMOVED_TO、または続いMOVED_FROMから、それを検出します:

 /** 
    * 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, new String[]{Contacts._ID, Contacts.DISPLAY_NAME}, null, null, null);列名がhttp://developer.android.com/reference/android/provider/ContactsContract.Contacts.htmlに記載されており、サンプルを見て、それがここにcursor.getLong(0)を思わあなたが探しているのコンタクトIDであると盗んする連絡先の列を指定することができます。連絡先がどのように編集され、他のユーザーが追加されたかによっても変化するようですが、そのようなケースも処理できるはずです。

+0

ありがとう、男!私は今あなたのおかげで私が必要としているすべてがあると思う。敬具 – CoolStraw

関連する問題