在android中的“创建新联系人”表单中访问“完成”按钮

时间:2013-03-15 09:58:39

标签: android

我是android的初学者并且遇到以下问题。

我在android中创建了OCR应用程序。在对文本进行OCR之后,将添加详细信息并预先填充以添加android的新联系人形式。当我们点击“完成”按钮时,详细信息将保存在电话簿中,页面将导航到电话簿。

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

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

 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 bundle for android development Ubuntu 12.04

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

提前致谢。

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分: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);