0

私はアンドロイドの初心者で、次の問題があります。

AndroidでOCRアプリを作成しました。テキストをOCRした後、詳細が取得され、Androidの新しい連絡先フォームに事前入力されます。「完了」ボタンをクリックすると、詳細が電話帳に保存され、ページが電話帳に移動します。

ページを自分のアプリに移動したい。ユーザーが「完了」ボタンをクリックしたとき。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);

Android開発Ubuntu 12.04にEclipse adtバンドルを使用しています

どんな助けでも大歓迎です...

前もって感謝します。

4

2 に答える 2

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 に答える
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 に答える