在我的应用程序中,我尝试使用sharedPreferences来保存一些基本设置以及首选项屏幕.我的sharedPreferences的名称是appPrefs,因此我的文件名是.../appPrefs.xml但是,我的应用程序屏幕将它的首选项保存在default.SharedPreference文件中,即com.COMPANY.PACKAGENAME_preferences.xml
我想做的是让我的首选项屏幕读取/写入appPrefs文件的首选项.我查看了API,找不到任何东西.我是不是要管理两个sharedPreference文件?
我试图在用户从联系人选择器中选择联系人后获取联系人姓名和电话号码.我试图使我的应用程序适用于SDK v3及以上,所以我创建了一个只调用我需要的API的抽象类.我已经有抽象类工作(它选择了正确的API),我也有SDK v3,4的API工作.我在使用ContactsContract的新API工作时遇到问题.
我可以获得联系人姓名,但它检索的号码始终是联系人ID之前的号码!示例:我有两个联系人"John Doe"和"Jane Doe",联系人中添加了相应的数字"555-555-555"和"777-777-7777".John Doe的ID = 1,Jane Doe的ID = 2.如果我试图获得Jane Doe的号码,我会得到John的,555-555-5555.如果我试图得到约翰的话,我什么也得不到.检查if(cursor.moveToNext())是否失败.
你能帮帮我解决这个问题吗?这让我发疯了.我看了很多例子,总是得到同样的错误.
Intent数据是来自onActivityResult的数据Intent
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Contacts;
class NewContactsAdapterBridge extends ContactsAdapterBridge {
ArrayList<String> info = new ArrayList<String>();
ArrayList<String> getInfo (Activity a, Intent data) {
Uri contactData = data.getData();
Cursor cursor = a.managedQuery(contactData, null, null, null, null);
if (cursor.moveToFirst()) {
String id = cursor.getString(
cursor.getColumnIndex(ContactsContract.Contacts._ID));
String name = cursor.getString(cursor.getColumnIndexOrThrow
(ContactsContract.Contacts.DISPLAY_NAME));
String hasPhoneNumber = cursor.getString(cursor.getColumnIndexOrThrow(
ContactsContract.Contacts.HAS_PHONE_NUMBER)); …Run Code Online (Sandbox Code Playgroud)