我是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
任何帮助将不胜感激......
提前致谢。
答案 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);