1

当我单击 Android java 中的按钮时,当 MainActivity 在顶视图活动中未处于活动状态时,剪贴板数据返回 null

我阅读了有关 android10 及更高版本的限制,但我的活动不是后台服务。当我单击位于顶视图活动(如 Google 翻译应用程序)中的按钮时,我需要获取剪贴板数据。就我而言,当 MainActivity 不活动时,剪贴板返回 null 。

谷歌翻译 https://developer.android.com/about/versions/10/privacy/changes#clipboard-data

public class MainActivity extends BridgeActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Initializes the Bridge
        this.init(savedInstanceState, new ArrayList<Class<? extends Plugin>>() {{
          // Additional plugins you've installed go here
          // Ex: add(TotallyAwesomePlugin.class);
        }});
        
        startActivity(new Intent(MainActivity.this, FloatingWindow.class));
    }
}



public class FloatingWindow extends Activity {
// ... additional code ....
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        floatingButtonDefinedInClass.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    self.getClipboardText(); 
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
    }
    
    public void getClipboardText() throws IOException {
        try {
            ClipboardManager myClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
            ClipData clipData = myClipboard.getPrimaryClip();
            if(clipData != null) {
                text = (String) clipData.getItemAt(0).getText();
                System.out.println(text); // returns null when mainactivity is not active 
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }    
// ... additional code ....
}
4

1 回答 1

0

“主要活动不活跃”是什么意思?你可以访问ClipboardManagerinside OnClickListenerattach to Button,这是一个View并且需要Context,所以必须是活着Activity的,这会保持Button在屏幕上以供点击...

顺便提一句。也许您正在检查 Android 10 或更高版本?根据文档看起来

对剪贴板数据的访问受限

除非您的应用是默认输入法编辑器 (IME) 或当前具有焦点的应用,否则您的应用无法在 Android 10 或更高版本上访问剪贴板数据。

隐私/安全原因,这就是它现在的工作方式

于 2020-11-30T12:47:47.780 回答