IME

2012-11-29 22 views
5

sonucu için Etkinlik Etkinliği Hedefi başlatan uygulamaya biraz metin göndermesi gereken bir uygulama geliştiriyorum.IME

Ancak amacı başlatan uygulama IME/yumuşak Klavye'dir. Dolayısıyla, IME bir hizmet olduğu için StartActivityForResult kullanılamıyor.

Bunu nasıl başarabilirim? Şu ana kadar ne var

:

Klavye:

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); 

Diğer uygulamalar: Bu düsünmek için

@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

Bunun için bir yayın alıcısı kullanamazsınız? –

cevap

0

Bir ResultReceiver kullanabilirsiniz.

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

ResultReceiver'u kullanabilirsiniz. this example'a bakın, oldukça açık, nasıl çalıştığını açıklıyor.