我的活动(" A")我想开始第三方应用程序的启动器活动。此第三方活动(" B")最终会将一些内容粘贴到剪贴板。
我在A中的ClipboardManager中添加了一个OnPrimaryClipChangedListener,当剪贴板在B内部发生变化时我想返回A.
MainActivity中的代码(Activity" A"):
$i = 0;
foreach($DataArray as $ItemArray){
foreach($ItemArray as $Key=>$Value){
$NewArray[$i][$Key] = $Value;
$NewArray[$i]['count'] = 0;
if(isset($CountArray[$ItemArray['brand_slug']])){
$NewArray[$i]['count'] = $CountArray[$ItemArray['brand_slug']];
}
}
ksort($NewArray[$i]);
$i++;
}
print_r($NewArray);
听众工作,由Toast证明,它显示了剪贴板的内容。
我认为活动堆栈是A> B开始后B.我理解了
的文档public void buttonClicked(View v) {
Intent intent = getPackageManager().getLaunchIntentForPackage("third.party.package");
Log.d(TAG,intent.toString());
startActivity(intent);
final ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
cm.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {
@Override
public void onPrimaryClipChanged() {
if (cm.hasPrimaryClip()) {
ClipData data = cm.getPrimaryClip();
String str = data.getItemAt(0).getText().toString();
if (str.matches("^\\d{6}$")) {
Intent intent = new Intent(MainActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("some.identifier", str);
Log.d(TAG,intent.toString());
startActivity(intent);
Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
cm.removePrimaryClipChangedListener(this);
}
}
}
});
}
我的侦听器中的startActivity()应该启动A的新实例。但是它不应该将它放在堆栈的顶部(A> B> A),它应该在A之上弹出每个活动,所以在这种情况下堆栈只包含A。
但相反,我看到活动B的Toast位于前景(而不是A)。
有什么建议吗?