0

我是android的初学者,有以下问题。

我在 android 中创建了 OCR 应用程序。在对文本进行 OCR 处理后,会获取详细信息并预先填写添加新的 android 联系表单。当我们单击“完成”按钮时,详细信息将保存在电话簿中,页面导航到电话簿。

我想将页面导航到我的应用程序。当用户单击“完成”按钮时。我不知道如何更改按钮的单击事件,因为它是由 android 操作系统预定义的。

“添加新联系人”的示例代码

 Intent intent = new Intent(Intent.ACTION_INSERT);
 intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
 intent.putExtra(ContactsContract.Intents.Insert.NAME, fName);
 intent.putExtra(ContactsContract.Intents.Insert.PHONE,phno.toString());
 intent.putExtra(ContactsContract.Intents.Insert.EMAIL,email);
 startActivity(intent);

我正在使用 eclipse adt 包进行 android 开发 Ubuntu 12.04

任何帮助将不胜感激...

提前致谢。

4

2 回答 2

0

您可以使用 startActivityForResult(intent, requestCode) 等待来自新联系人屏幕的结果。只需在您的活动中覆盖 onActivityResult 方法,如下所示:

private static final int NEW_CONTACT_REQUEST_CODE = 0;    

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == NEW_CONTACT_REQUEST_CODE) {
        // Check if the request was successful
        if (resultCode == RESULT_OK) {
            Toast.makeText(context, "Contact added.", Toast.LENGTH_SHORT).show();
        }
    }
}

并将您的“添加新联系人”代码修改为:

Intent intent = new Intent(Intent.ACTION_INSERT);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
intent.putExtra(ContactsContract.Intents.Insert.NAME, fName);
intent.putExtra(ContactsContract.Intents.Insert.PHONE,phno.toString());
intent.putExtra(ContactsContract.Intents.Insert.EMAIL,email);
if (Integer.valueOf(Build.VERSION.SDK) > 14) {
    intent.putExtra("finishActivityOnSaveCompleted", true);
}
startActivityForResult(intent, NEW_CONTACT_REQUEST_CODE);
于 2013-03-15T10:19:40.023 回答
0

首先,您不能更改完成按钮的行为并让该应用程序在设备上运行。

我不确定,但我可以给你的提示是,在这种情况下,你可以尝试android.database.ContentObserver倾听变化。当变化发生时,你可以采取适当的行动。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    getContentResolver().registerContentObserver(
    ContactsContract.Contacts.CONTENT_URI, true, new MyObserver());
}

class MyObserver extends ContentObserver {

    public MyObserver() {
        super(null);
    }

    @Override
    public void onChange(boolean selfChange) {
        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                Toast.makeText(MainActivity.this, "Something Changed",
                Toast.LENGTH_SHORT).show();

            }
        });

        super.onChange(selfChange);
    }
}
于 2013-03-15T10:17:02.340 回答