在使用意图存储联系人时返回 Result_ok 后退按钮点击(来自 android 默认的 Add Contact Screen )

Posted

技术标签:

【中文标题】在使用意图存储联系人时返回 Result_ok 后退按钮点击(来自 android 默认的 Add Contact Screen )【英文标题】:Return Result_ok on back button hit (from android default Add Contact Screen ) at the time of storing contacts using intent 【发布时间】:2013-07-13 09:49:17 【问题描述】:

我尝试使用意图存储联系人

Intent intent = new Intent(
                    ContactsContract.Intents.Insert.ACTION,
                    ContactsContract.Contacts.CONTENT_URI);
            intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
            intent.putExtra(ContactsContract.Intents.Insert.NAME,
                    "Contact name here");
            intent.putExtra(ContactsContract.Intents.Insert.COMPANY,
                    "Company Name");
            intent.putExtra(ContactsContract.Intents.Insert.EMAIL,
                    "someemailid@gmail.com");
            intent.putExtra(ContactsContract.Intents.Insert.PHONE,
                    "9999999999");
            if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH)
                intent.putExtra("finishActivityOnSaveCompleted", true);
            startActivityForResult(intent, 100);

现在,如果我选择丢弃或恢复,我会从联系屏幕获得 RESULT_CANCELLED onacitivityresult 但为什么在点击后退按钮时会出现 result_ok 。还有一个问题是 在 4.2 中,如果我最小化应用程序(最近的应用程序按钮点击)联系人将被存储,而无需点击完成或后按。 尝试使用正常的活动类(没有默认意图操作)它的工作正常返回在后退按钮点击时取消我希望联系意图具有相同的行为。按下后退按钮时,它应该返回 result_cancelled。

保存在应用最小化的联系人

谢谢

【问题讨论】:

我对你的问题有点困惑。您的问题是当您点击返回按钮时,您会在 onActivityResult 回调中收到 RESULT_CANCELLED 吗? 这是预期的结果。如果用户点击后退按钮,则表示他们想要返回,这意味着取消当前操作。 srry 错误地发布了最后一条评论......实际上它在从添加联系人屏幕点击返回按钮时返回 result_ok。 Srry 4 最后的评论.. 【参考方案1】:

可能是因为ContactEditorActivity 覆盖了返回键并保存了当前联系人:

@Override
public void onBackPressed() 
    mFragment.save(SaveMode.CLOSE);

更新:

"its also storing contact on minimizing the app"

当应用最小化时,其onPause()onStop() 方法将被调用。在您的情况下,联系人被存储,因为ContactEditorFragment 将数据保存在onStop()

@Override
public void onStop() 
    super.onStop();
    if (mAggregationSuggestionEngine != null) 
        mAggregationSuggestionEngine.quit();
    

    // If anything was left unsaved, save it now but keep the editor open.
    if (!getActivity().isChangingConfigurations() && mStatus == Status.EDITING) 
        save(SaveMode.RELOAD);
    

【讨论】:

ok thnks 的回复:),是否可以在点击后退按钮时取消结果?我的意思是另一种方式? &它还存储在 4.2 中最小化应用程序的联系人(同时选择设备的最近应用程序按钮) @user1140237:我认为,一旦联系人被保存,您不应该期待RESULT_CANCELED。所以,这很正常。对于您问题的第二部分,请参阅更新。 我检查了联系人应用程序中的代码...&我可以理解您正在存储它 bt 我们可以有 alt sol 吗...?如何防止这种行为? 据我所知,目前无法阻止这种行为。 好的 @shoerat 感谢您的帮助 :) .. 我将创建自己的设计布局来添加联系人而不使用默认意图。

以上是关于在使用意图存储联系人时返回 Result_ok 后退按钮点击(来自 android 默认的 Add Contact Screen )的主要内容,如果未能解决你的问题,请参考以下文章

在我的意图android中选择联系人后如何删除联系人

在 Android 设备中使用 ACTION_PICK 意图仅显示带有电话号码的联系人

如何使用关键字过滤Android中的联系人

电话号码检索意图

从片段中的相机意图返回后屏幕变为白色

当通过意图从相机应用程序返回时,Android 活动被破坏