java - 如何将 Uri 值传递给 bundle 值

标签 java android android-intent uri

以下代码获取多个联系人并将它们存储在一个包中:

 Intent phonebookIntent = new Intent("intent.action.INTERACTION_TOPMENU");
    phonebookIntent.putExtra("additional", "phone-multi");
    phonebookIntent.putExtra("maxRecipientCount", MAX_PICK_CONTACT);
    phonebookIntent.putExtra("FromMMS", true);
    startActivityForResult(phonebookIntent, REQUEST_CODE_PICK_CONTACT);

下面的代码检索选定的数据:

  if (requestCode ==  REQUEST_CODE_PICK_CONTACT) {

            Uri contractData = data.getData();

            Bundle contantData =  data.getExtras();
            String result= contantData.getString("result");
            ArrayList<String> contacts = contantData.getStringArrayList("result");
            ContactRetriever cr = new ContactRetriever(getApplicationContext(), contacts);
            Person p = cr.getPerson();

我想要 Uri 中的数据,以便我可以在引用 Uri 数据的其他类中使用它。

如何将包值传递给 Uri 数据?

另一个使用 Uri 数据作为“contactData”的例子:

private String getNumber() {
    String ret = null;


    Cursor cId = cr.query(contractData, new String[]{ContactsContract.Contacts._ID}, null, null, null);

    if (cId.moveToFirst()){
        id = cId.getString(cId.getColumnIndex(ContactsContract.Contacts._ID));
        Log.i(TAG + " IDs: ", id);
    }
    cId.close();

    Cursor cNum = cr.query(contractData, null, null, null, null);

    if (cNum.moveToNext()){
        ret = cNum.getString(cNum.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
        Log.i(ret, TAG + " NUMBERS: ");
    }
    return ret;
}

private String getName() {
    String ret = null;

    Cursor c = cr.query(contractData, null, null, null, null);
    if (c.moveToFirst())
        ret = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

    c.close();
    Log.i(TAG + "NAMES: ", ret);
    return ret;
}

contractData的具体用法示例:

Cursor cId = cr.query(contractData, new String[]{ContactsContract.Contacts._ID}, null, null, null);

Cursor cNum = cr.query(contractData, null, null, null, null);

Cursor c = cr.query(contractData, null, null, null, null);

最佳答案

Uri 实现了 Parcelable 所以你可以这样做:

phonebookIntent.putExtra("uri", your_uri_object);

回读:

Uri uri =  getIntent().getParcelableExtra("uri");

关于java - 如何将 Uri 值传递给 bundle 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41692415/

相关文章:

java - 多个 Spring 3.2 计划任务不会并行运行

java - Kotlin objects & companion objects & lazy 如何处理内存

android - 将 bool Intent 从 onBackPressed() 发送到 onStart()

android - 在 Android 中检测 VPN 背后

java在linux服务器上执行chromedriver

java - android studio design 和 v7 中的导入错误 - Android Studio -

java - android以编程方式替换可绘制图像

java - Libgdx 从 Gdx.files.external() 加载纹理,显示为黑色矩形

android - 如何为eclipse安装最新版本的ADT插件

java - JlayeredPane 透明度 setOpaque 不起作用