您可以使用以下代码示例来解决Android中Profile CONTENT_URI返回零计数的游标问题:
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Cursor cursor = getProfilesCursor(this);
if (cursor != null && cursor.moveToFirst()) {
do {
String profileId = cursor.getString(cursor.getColumnIndex(ContactsContract.Profile._ID));
String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.Profile.DISPLAY_NAME_PRIMARY));
Log.d(TAG, "Profile ID: " + profileId + ", Display Name: " + displayName);
} while (cursor.moveToNext());
cursor.close();
}
}
private Cursor getProfilesCursor(Context context) {
Uri uri = ContactsContract.Profile.CONTENT_URI;
String[] projection = {ContactsContract.Profile._ID, ContactsContract.Profile.DISPLAY_NAME_PRIMARY};
String selection = null;
String[] selectionArgs = null;
String sortOrder = null;
return context.getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);
}
}
这个示例中,我们使用getContentResolver().query()
方法来查询Profile CONTENT_URI,并将结果存储在Cursor对象中。然后,我们可以从Cursor中提取所需的数据,如Profile ID和Display Name,并进行相应的处理。
请确保您的应用已经获得了适当的权限来访问联系人数据,如下所示:
这将在AndroidManifest.xml文件中添加一个权限声明。
希望这可以帮助您解决问题!