热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开源项目之AndroidAnyCut(快捷方式)

AnyCut创建快捷方式,可以创建N个快捷方式,例如可以吧喜欢的网页保存在桌面上,方便下次打开,也可以把电话号码保存在桌面上

AnyCut创建快捷方式,可以创建N个快捷方式,例如可以吧喜欢的网页保存在桌面上,方便下次打开,也可以把电话号码保存在桌面上,方便打电话。就像电脑上的快捷方式一样。很好的实例,下载下来直接就可以使用。项目如图:


效果如图:



关键源码贴出:

 

private Intent createShortcutIntent() { //创建快捷意图Intent intent = new Intent();EditText view;view = (EditText) findViewById(R.id.action);intent.setAction(view.getText().toString());view = (EditText) findViewById(R.id.data);String data = view.getText().toString();view = (EditText) findViewById(R.id.type);String type = view.getText().toString();boolean dataEmpty = TextUtils.isEmpty(data);boolean typeEmpty = TextUtils.isEmpty(type);if (!dataEmpty && typeEmpty) {intent.setData(Uri.parse(data));} else if (!typeEmpty && dataEmpty) {intent.setType(type);} else if (!typeEmpty && !dataEmpty) {intent.setDataAndType(Uri.parse(data), type);}return new Intent().putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);}

//返回一个Intent描述了快捷键意图private Intent generatePhoneShortcut(Intent result, int actionResId, String scheme, String action) { Uri phoneUri = result.getData();long personId = 0;String name = null;String number = null;int type;Cursor cursor = getContentResolver().query(phoneUri,new String[] { Phones.PERSON_ID, Phones.DISPLAY_NAME, Phones.NUMBER, Phones.TYPE },null, null, null);try {cursor.moveToFirst();personId = cursor.getLong(0);name = cursor.getString(1);number = cursor.getString(2);type = cursor.getInt(3);} finally {if (cursor != null) {cursor.close();}}Intent intent = new Intent();Uri personUri = ContentUris.withAppendedId(People.CONTENT_URI, personId);intent.putExtra(Intent.EXTRA_SHORTCUT_ICON,generatePhoneNumberIcon(personUri, type, actionResId));// Make the URI a direct tel: URI so that it will always continue to workphoneUri = Uri.fromParts(scheme, number, null);intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(action, phoneUri));intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);return intent;}//生成一个电话号码的快捷方式图标private Bitmap generatePhoneNumberIcon(Uri personUri, int type, int actionResId) {final Resources r = getResources();boolean drawPhoneOverlay = true;Bitmap photo = People.loadContactPhoto(this, personUri, 0, null);if (photo == null) {// If there isn't a photo use the generic phone action icon insteadBitmap phoneIcon = getPhoneActionIcon(r, actionResId);if (phoneIcon != null) {photo = phoneIcon;drawPhoneOverlay = false;} else {return null;}}// Setup the drawing classesint iconSize = (int) r.getDimension(android.R.dimen.app_icon_size);Bitmap icon = Bitmap.createBitmap(iconSize, iconSize, Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(icon);// Copy in the photoPaint photoPaint = new Paint();photoPaint.setDither(true);photoPaint.setFilterBitmap(true);Rect src = new Rect(0,0, photo.getWidth(),photo.getHeight());Rect dst = new Rect(0,0, iconSize,iconSize);canvas.drawBitmap(photo, src, dst, photoPaint);// Create an overlay for the phone number typeString overlay = null;switch (type) {case Phones.TYPE_HOME:overlay = "H";break;case Phones.TYPE_MOBILE:overlay = "M";break;case Phones.TYPE_WORK:overlay = "W";break;case Phones.TYPE_PAGER:overlay = "P";break;case Phones.TYPE_OTHER:overlay = "O";break;}if (overlay != null) {Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);textPaint.setTextSize(20.0f);textPaint.setTypeface(Typeface.DEFAULT_BOLD);textPaint.setColor(r.getColor(R.color.textColorIconOverlay));textPaint.setShadowLayer(3f, 1, 1, r.getColor(R.color.textColorIconOverlayShadow));canvas.drawText(overlay, 2, 16, textPaint);}// Draw the phone action icon as an overlayif (ENABLE_ACTION_ICON_OVERLAYS && drawPhoneOverlay) {Bitmap phoneIcon = getPhoneActionIcon(r, actionResId);if (phoneIcon != null) {src.set(0,0, phoneIcon.getWidth(),phoneIcon.getHeight());int iconWidth = icon.getWidth();dst.set(iconWidth - 20, -1, iconWidth, 19);canvas.drawBitmap(phoneIcon, src, dst, photoPaint);}}return icon;}

 

创建后,看下主界面,你会发现多了一个快捷图标!呵呵,代码是不是非常简单易懂?~

项目下载

 


 

转:https://www.cnblogs.com/snake-hand/archive/2013/06/16/3138649.html



推荐阅读
  • 用户视图(查看运行状态或其他参数)系统视图(配置设备的系统参数)system-viewEntersystemview,returnuservi ... [详细]
  • Jboss的EJB部署描述符standardjaws.xml配置步骤详解
    本文详细介绍了Jboss的EJB部署描述符standardjaws.xml的配置步骤,包括映射CMP实体EJB、数据源连接池的获取以及数据库配置等内容。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • AFNetwork框架(零)使用NSURLSession进行网络请求
    本文介绍了AFNetwork框架中使用NSURLSession进行网络请求的方法,包括NSURLSession的配置、请求的创建和执行等步骤。同时还介绍了NSURLSessionDelegate和NSURLSessionConfiguration的相关内容。通过本文可以了解到AFNetwork框架中使用NSURLSession进行网络请求的基本流程和注意事项。 ... [详细]
  • PHP反射API的功能和用途详解
    本文详细介绍了PHP反射API的功能和用途,包括动态获取信息和调用对象方法的功能,以及自动加载插件、生成文档、扩充PHP语言等用途。通过反射API,可以获取类的元数据,创建类的实例,调用方法,传递参数,动态调用类的静态方法等。PHP反射API是一种内建的OOP技术扩展,通过使用Reflection、ReflectionClass和ReflectionMethod等类,可以帮助我们分析其他类、接口、方法、属性和扩展。 ... [详细]
  • 安装oracle软件1创建用户组、用户和目录bjdb节点下:[rootnode1]#groupadd-g200oinstall[rootnode1]#groupad ... [详细]
  • oracle安装时找不到启动,Oracle没有开机自启是怎么回事?这一步骤很重要
    重启Oracle数据库重启Oracle数据库包括启动Oracle数据库服务进程和启动Oracle数据库两步,大家继续往下看。按照《【Oracle】什么?作为DBA&# ... [详细]
  • SpringMVC工作流程概述
    SpringMVC工作流程概述 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • 通过手机浏览器调用客户端QQ
    php教程|php手册thinkphp代码,代码示例,代码参考,php短信,数据库备份代码,令牌验证,去除代码中的空白和注释调用QQ客户端php教程-php手册可调用iosandr ... [详细]
  • 移动传感器扫描覆盖摘要:关于传感器网络中的地址覆盖问题,已经做过很多尝试。他们通常归为两类,全覆盖和栅栏覆盖,统称为静态覆盖 ... [详细]
  • Request对象和Response对象request:(请求)当一个页面被请求时,Django就会创建一个包含本次请求原信息的HttpRequest对象。Djang ... [详细]
author-avatar
铜钱
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有