启动第三方活动,稍后将其销毁以返回自己的活动

时间:2017-02-21 12:57:06

标签: android

我的活动(" 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)。

有什么建议吗?

0 个答案:

没有答案