2012-11-29 32 views
5

Tôi đang phát triển một ứng dụng sẽ trả về một số văn bản cho ứng dụng đã bắt đầu mục đích.Bắt đầu Hoạt động để có kết quả từ IME

Nhưng ứng dụng khởi động ý định là Bàn phím IME/mềm. Vì vậy, StartActivityForResult không khả dụng vì IME là một dịch vụ.

Tôi làm cách nào để đạt được điều này?

Những gì tôi có cho đến nay:

Bàn phím:

final Intent intent = new Intent("com.example.helloworld.GETTEXT"); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); 
intent.putExtra("keyboard", true); 
startActivity(intent); 

App khác:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Bundle extras = getIntent().getExtras(); 
    if (extras == null){     
     return; 
    } else { 
     finish(); 
    } 
} 

@Override 
public void finish() { 
    Intent data = new Intent(); 
    data.putExtra("test", "PASSED"); 
    setResult(RESULT_OK, data); 
    super.finish(); 
} 
+0

bạn không thể sử dụng bộ thu phát sóng cho điều này? –

Trả lời

0

Bạn có thể sử dụng một ResultReceiver cho điều này là suy nghĩ.

ResultReceiver lReceiver = new KeyboardResultReceiver(aListener); 
final Intent intent = new Intent("com.example.helloworld.GETTEXT"); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); 
intent.putExtra(EXTRA_RESULT_RECIEVER, lReceiver); 
intent.putExtra("keyboard", true); 
startActivity(intent); 

private static final class KeyboardResultReceiver extends ResultReceiver { 

    public FileUploadResultReceiver() { 
    } 

    @Override 
    protected void onReceiveResult(int aResultCode, Bundle aResultData) { 
      //Do your thing here you can also use the bundle for your data transmission 
    } 
} 
1

Bạn có thể sử dụng ResultReceiver. Nhìn vào this example, nó khá rõ ràng giải thích cách hoạt động.

Các vấn đề liên quan