gpt4 book ai didi

android - Android 上的后退按钮保存联系人而不是返回到应用程序

转载 作者:太空宇宙 更新时间:2023-11-03 10:45:50 24 4
gpt4 key购买 nike

我已经设置了一个使用 cordova 来创建新联系人的应用程序。我为此创建了一个自定义 Cordova 插件,它是通过启动 Intent 来打开联系人创建屏幕并填充其中的一些字段来完成的。但是,当在此屏幕上按下后退按钮时,联系人不会返回到应用程序,而是会被保存。这种行为是否以某种方式存在,是否有办法阻止它?

启动联系人创建屏幕的代码如下所示:

private void createContact(String fullname, String phone, String company) {
Context context=this.cordova.getActivity().getApplicationContext();
Intent i = new Intent(Intent.ACTION_INSERT);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
i.setType(ContactsContract.Contacts.CONTENT_TYPE);
i.putExtra(ContactsContract.Intents.Insert.NAME, fullname);
i.putExtra(ContactsContract.Intents.Insert.PHONE, phone);
i.putExtra(ContactsContract.Intents.Insert.COMPANY, company);
context.startActivity(i);
}

最佳答案

这是预期的行为。您可以查看联系人应用程序的源代码。

来自manifest我们可以确定处理此 Intent 的 Activity 是 ContactEditorActivity .在内部它使用 ContactEditorFragment ,它几乎可以处理所有事情。

当你按下保存按钮时,执行的代码是

        View saveMenuItem = customActionBarView.findViewById(R.id.save_menu_item);
saveMenuItem.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mFragment.doSaveAction();
}
});

Fragment 类中doSaveAction() 的实现是:

public void doSaveAction() {
save(SaveMode.CLOSE);
}

您可能感兴趣的一点是 Activity 的 onBackPressed() 保存。

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

所以,基本上,保存和退出执行完全相同的代码。

注意:我认为问题(从您的角度来看)是联系人已保存。关于“不返回到应用程序”部分,答案要简单得多:只需删除 FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_MULTIPLE_TASK 标志。

FLAG_ACTIVITY_NEW_TASK指示 Android 在新任务中启动 Activity,该任务完全独立于启动它的应用程序运行(因此,按下后退时它不会返回)。

关于android - Android 上的后退按钮保存联系人而不是返回到应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23949977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com