欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android仿淘口令复制弹出框功能(简答版)

程序员文章站 2023-11-29 17:21:16
上篇文章给大家介绍了android实现打开手机淘宝并自动识别淘宝口令弹出商品信息功能,接下来通过本文给大家分享android简单版仿淘口令复制弹出框功能,希望对大家有所帮助...

上篇文章给大家介绍了android实现打开手机淘宝并自动识别淘宝口令弹出商品信息功能,接下来通过本文给大家分享android简单版仿淘口令复制弹出框功能,希望对大家有所帮助!

使用android系统的粘贴板管理服务及clipboardmanager通过addprimaryclipchangedlistener添加listener来监听粘贴板的状态,很很简单的一个小功能~

1.首先创建一个service在后台运行:

intent intent = new intent(this,mainservice.class); 
startservice(intent); 

另外同时在onresume()中获得粘贴板复制的内容,用于在app未启动或者service被关闭时重新启动app来弹出口令窗口

@override 
protected void onresume() { 
 // todo auto-generated method stub 
 super.onresume(); 
 clipboardmanager mclipboardmanager = (clipboardmanager)getsystemservice(context.clipboard_service); 
 log.e("copylistenerdemo", mclipboardmanager.getprimaryclip().getitemat(0).gettext().tostring()); 
} 

2.在service管理粘贴板服务:

mclipboardmanager = (clipboardmanager)getsystemservice(context.clipboard_service); 
mclipboardmanager.addprimaryclipchangedlistener(mprimaryclipchangedlistener); 

3.在onprimaryclipchanged()做想要的事情,例如弹出框:

使用windowmanager来显示弹出框

layoutinflater layoutinflater = (layoutinflater) getsystemservice(context.layout_inflater_service);  
 final view floatview = layoutinflater.inflate(r.layout.floater, null); 
 final windowmanager mwindowmanager = (windowmanager) getapplicationcontext().getsystemservice(context.window_service); 
 layoutparams params = new windowmanager.layoutparams(); 
 params.type = windowmanager.layoutparams.type_system_error;//系统内部错误提示,显示于所有内容之上 
 params.format = pixelformat.rgba_8888; 
 params.flags = windowmanager.layoutparams.flag_not_touch_modal 
  | windowmanager.layoutparams.flag_not_focusable; //当窗口可以获得焦点(没有设置flag_not_focusalbe选项)时,仍然将窗口范围之外的点设备事件(鼠标、触摸屏)发送给后面的窗口处理 
 params.width = windowmanager.layoutparams.match_parent; 
 params.height = windowmanager.layoutparams.wrap_content; 
 params.gravity = gravity.left | gravity.top; 
 params.x = 0; 
 params.y = 0; 
 mwindowmanager.addview(floatview, params); 
 objectanimator animatorshow = objectanimator.offloat(floatview, "alpha", 0.0f,1.0f); 
 animatorshow.setduration(500); 
 animatorshow.start(); 
 objectanimator animatorhide = objectanimator.offloat(floatview, "alpha", 1.0f,0.0f); 
 animatorhide.setduration(500); 
 animatorhide.setstartdelay(3000); 
 animatorhide.start(); 

点击弹出框,跳转activity     

floatview.setonclicklistener(new onclicklistener() { 
 @override 
 public void onclick(view v) { 
 // todo auto-generated method stub 
 toast.maketext(mainservice.this, "点击淘口令", toast.length_short).show(); 
 intent intent = new intent(); 
 intent.setflags(intent.flag_activity_new_task); 
 intent.setclass(mainservice.this, xxactivity.class); 
 startactivity(intent); 
 } 
}); 

很简单的小功能,不过应用的实际过程应该还会出现一些待解决的小问题

好了,下面看下淘口令原理:clipboard笔记

clipboard是android提供的一个系统服务,它提供了一个全局的剪贴板,让文字、图片、数据,在多app间共享成为可能。

clipboard的基本使用,分为三步:

获得clipboardmanager:

clipboardmanager mclipboardmanager = mclipboardmanager = 
 (clipboardmanager) getsystemservice(clipboard_service);

 copy:

 clipdata mclipdata;
 string text = "hello world";
 mclipdata = clipdata.newplaintext("test", text);
 mclipboardmanager.setprimaryclip(mclipdata); 

paste:

clipdata clipdata = mclipboardmanager.getprimaryclip();
 clipdata.item item = clipdata.getitemat(0);
 string text = item.gettext().tostring();

搞定!

总结

以上所述是小编给大家介绍的android仿淘口令复制弹出框功能(简答版),希望对大家有所帮助