Android 如何使RecognizerIntent启动if启动的不同活动?
在我的应用程序活动中,A使用startActivityForResult发送识别器意图。是否可以告诉它将结果返回给活动B而不通过活动A返回?Android 如何使RecognizerIntent启动if启动的不同活动?,android,android-intent,recognizer-intent,Android,Android Intent,Recognizer Intent,在我的应用程序活动中,A使用startActivityForResult发送识别器意图。是否可以告诉它将结果返回给活动B而不通过活动A返回?pendingents并不意味着将结果返回给调用者,因此该操作已结束 如果ActivityB在后台的ActivityA后面,只需执行以下操作: ActivityA { @Override public void onActivityResult (int requestCode, int resultCode, Intent data) {
pendingent
s并不意味着将结果返回给调用者,因此该操作已结束
如果ActivityB在后台的ActivityA后面,只需执行以下操作:
ActivityA {
@Override
public void onActivityResult (int requestCode, int resultCode, Intent data) {
setResult(resultCode, data);
finish();
}
}
这将把RecognizerIntent
活动传回ActivityA的任何数据传递给ActivityB
如果ActivityB是一个单独的活动,您希望在RecognizerIntent
活动完成时启动该活动:
ActivityA {
@Override
public void onActivityResult (int requestCode, int resultCode, Intent data) {
Intent intent = new Intent(this, ActivityB.class);
intent.putExtras(data);
startActivity(intent);
}
}
这将从ActivityA启动ActivityB,将数据作为可通过
getIntent()检索的捆绑包传递。获取额外(字符串键)
使用挂起的内容,您可以将结果推送到ActivityB,而无需返回:
在活动A中:
Intent activityIntent = new Intent(this, ActivityB.class);
PendingIntent resPendingIntent = PendingIntent.getActivity(this, 0, activityIntent, 0);
Intent speechRecIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
speechRecIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
speechRecIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
speechRecIntent.putExtra(RecognizerIntent.EXTRA_RESULTS_PENDINGINTENT, resPendingIntent);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, speechRecIntent, 0);
try {
pendingIntent.send();
} catch (PendingIntent.CanceledException e) {
e.printStackTrace();
}
然后在活动B中,在其onCreate()中获得结果:
Intent-Intent=getIntent();
if(intent.hasExtra(RecognizerIntent.EXTRA_结果);
ArrayList SpeechResults=intent.getStringArrayList(RecognizerIntent.EXTRA_结果);
我在玩一个PedingContent,但无法让它工作。感谢您抽出时间,但您的回答正是我在问“不返回活动a”时想到的(和工作代码)我是否在未将其视为startActivity或startActivityForResult的情况下启动它?您不必这样做。您可以通过调用PendingEvent#send来调用speech rec.activity。我已经编辑了我的答案。将上述模式应用于我的代码会导致应用程序崩溃,出现“com.google.android.wearable.gmsclient.WearableException:sendRpcAsync failed:Status{statusCode=未知状态代码:4000,resolusion=null}异常。
Intent intent = getIntent();
if(intent.hasExtra(RecognizerIntent.EXTRA_RESULTS);
ArrayList<String> speechRecResults = intent.getStringArrayList(RecognizerIntent.EXTRA_RESULTS);