[英]Passing phone number or CONTACT_ID from android contact details to activity (whatsapp like)
我想要实现的是在 android book 联系方式中为我的应用程序添加快捷方式,类似于 whatsapp 正在做的事情。
我一直在关注这个教程: http : //blogs.quovantis.com/syncing-contacts-with-an-android-application-2/它运行良好,但作者没有展示如何从联系人详细信息传递数据到查看活动: https : //github.com/ajkh35/ContactsDemo/blob/master/app/src/main/java/com/example/ajay/contacts_4/ViewingActivity.java
文章下方有一些评论,但作者没有具体回答,找不到任何有用的信息
Uri data = getIntent().getData(); //content://com.android.contacts/data/1169
List<String> params = data.getPathSegments();
String first = params.get(0);
String second = params.get(1);
在第二个参数中传递了一些数字,但它不是 CONTACT_ID 或 RAW_CONTACT_ID。 有什么帮助吗?
好的,您从“ Contacts
应用程序获得的Uri
似乎是一个Data
uri。
Data
行包含有关特定RawContact
的特定数据项(如电话号码或电子邮件)的RawContact
,因此单个Data
行“属于”单个RawContact
,后者“属于”单个Contact
。
幸运的是, ContactsContract
API 允许在查询Data
表时进行隐式连接,因此您可以执行以下操作:
Uri dataUri = getIntent().getData(); //content://com.android.contacts/data/1169
String[] projection = new String[]{
Data.CONTACT_ID,
Data.RAW_CONTACT_ID,
Data.DISPLAY_NAME,
Data.MIMETYPE,
Data.DATA1};
Cursor cur = getContentResolver().query(dataUri, projection, null, null, null);
cur.moveToFirst(); // there should always be exactly one result, since we have a specific data uri here
Log.i("Contact Info", "Got info: id=" + cur.getLong(0) + ", raw-id=" + cur.getLong(1) + ", " + cur.getString(2) + ", " + cur.getString(3) + ", " + cur.getString(4));
cur.close();
我知道这是一个很晚的响应,但请查看以下代码。
class MessageActivity : AppCompatActivity() {
private val TAG: String = javaClass.simpleName
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_message)
if(intent != null && intent.data != null) {
Log.e(TAG, intent.data.toString())
var contactName = ""
val cursor = contentResolver.query(intent.data!!,
arrayOf(ContactsContract.Data.DATA1,ContactsContract.Data.DATA2,ContactsContract.Data.DATA3),
null,null,null)
if(cursor != null && cursor.moveToFirst()) {
do{
Log.e(TAG, cursor.getString(cursor
.getColumnIndexOrThrow(ContactsContract.Data.DATA1)))
contactName = cursor.getString(cursor
.getColumnIndexOrThrow(ContactsContract.Data.DATA2))
Log.e(TAG, contactName)
Log.e(TAG, cursor.getString(cursor
.getColumnIndexOrThrow(ContactsContract.Data.DATA3)))
}while (cursor.moveToNext())
cursor.close()
}
messaging_text.text = getString(R.string.messaging) + " $contactName"
}
}}
因此,当您注册联系人时,您会设置一些 Data1、Data2 和 Data3 值。 Data3 是在联系人中显示的内容。 您可以设置 Data1 和 Data2 一些您喜欢的值,然后像我上面提到的代码一样检索它。
你也可以在这里查看我的博客。 查找“同步服务”部分,最后您会找到 MessageActivity。
感谢和问候
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.