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