clipboard在单击位于“顶视图”活动中的按钮以及mainactivity未处于活动状态时返回null

tvokkenx  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(270)

当我在android java中单击按钮时,当mainactivity在top view activity中不活动时,剪贴板数据返回null
我读过关于android10和更高版本的限制,但我的活动不是后台服务。我需要得到剪贴板数据时,我点击按钮位于顶部视图的活动,如谷歌翻译应用程序。在我的例子中,当mainactivity处于非活动状态时,剪贴板返回null。

https://developer.android.com/about/versions/10/privacy/changes#clipboard-数据

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 ....
}
laawzig2

laawzig21#

“mainactivity is not active”是什么意思?您正在访问 ClipboardManager 内部 OnClickListener 附属于 Button ,这是一个 View 需要什么 Context ,所以一定有活着的 Activity ,它保存着这个 Button 在屏幕上点击。。。
顺便说一句,也许你正在检查安卓10或以上?据医生说
对剪贴板数据的访问受限
除非您的应用程序是默认的输入法编辑器(ime)或当前有焦点的应用程序,否则您的应用程序无法访问android 10或更高版本上的剪贴板数据。
隐私/安全原因,这就是它现在的工作方式

相关问题