2012-03-12 3 views
0

私はアンドロイドの連絡先リストから連絡先を削除するアプリケーションを作成しました。エミュレータで正常に動作していますが、デバイス内のコンタクトを削除していません。何が問題なの?私はcode.pleaseを投稿しています。エミュレータで動作しているが、デバイスではない連絡先を削除する

ArrayList ops = new ArrayList();

String [] args = new String [] {contactId};

  // if id is raw contact id 
     ops.add(ContentProviderOperation.newDelete(RawContacts.CONTENT_URI).withSelection(RawContacts._ID + "=?", args) .build()); 

     // if id is contact id 
     //ops.add(ContentProviderOperation.newDelete(RawContacts.CONTENT_URI).withSelection(RawContacts.CONTACT_ID + "=?", args) .build()); 
     try { 
      getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 
     } catch (RemoteException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (OperationApplicationException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

発見接触は、このコードを使用して行われ

ストリングget_Number(文字列名) {

列番号= NULL;

String where= "DISPLAY_NAME like ?"; 
    Cursor people = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, where, new String[]{name}, null); 
     people.moveToFirst(); 

       try{ 
        contactId = people.getString(people.getColumnIndex(ContactsContract.Contacts._ID)); //this is the ID used to delete contact 
        String hasPhone = people.getString(people.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
        if (hasPhone.equalsIgnoreCase("1")) 
         hasPhone = "true"; 
        else 
         hasPhone = "false" ; 
        if (Boolean.parseBoolean(hasPhone)) 
        { 
         Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null); 
         while (phones.moveToNext()) 
         { 
          number = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
          // mConno.add(position,phoneNumber); 

         } 
         phones.close(); 
        } 

       }  
       catch(Exception e) 
       { 

       } 



    return number; 


} 

とマニフェストに設定された権限は、ちょうど今、私が開発したこのアプリの奇妙な行動を発見した

<uses-permission android:name="android.permission.READ_CONTACTS"/> 
<uses-permission android:name="android.permission.WRITE_CONTACTS"/> 
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> 
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission> 
<uses-permission android:name="android.permission.SEND_SMS"/> 
<uses-permission android:name="android.permission.WRITE_SMS" /> 

です。この削除連絡先アプリの前に、私は "連絡先を追加"アプリを開発しました。

何が起こっているのですか?「連絡先を追加」アプリケーションで追加された連絡先を削除することはできませんが、手動で追加された連絡先を削除することはできません。

しかし、エミュレータで正常に動作しています。モバイルではない。何が起こっているのですか?

+0

連絡先を削除しようとするとどうなりますか?エラーなどがありますか? –

+0

モバイルナンバーにはエラーが表示されませんでした。「連絡先が削除されました」と言っています。実際には連絡先を削除していません。 – siva

+0

どのAndroidバージョンをお使いですか?デバイスで?そして、エミュレータでは? – PKeidel

答えて

0

未処理の連絡先を削除すると、の連絡先 idを使用しています。 これはうまくいかないでしょう。

連絡先はいくつかの未加工の連絡先で構成されています。連絡先を削除すると、すべての未加工の連絡先も削除されます。

はこれを実行します。操作が成功した場合は削除さ

long contactId = 12345; 
Uri contactUri = Uri.withAppendedPath(Contacts.CONTENT_URI, String.valueOf(contactId)); 
int deleted = getContentResolver().delete(contactUri, null, null); 

は1になります。

関連する問題