热门标签 | 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



推荐阅读
  • 在iOS开发中,基于HTTPS协议的安全网络请求实现至关重要。HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer)是一种旨在提供安全通信的HTTP扩展,通过SSL/TLS加密技术确保数据传输的安全性和隐私性。本文将详细介绍如何在iOS应用中实现安全的HTTPS网络请求,包括证书验证、SSL握手过程以及常见安全问题的解决方法。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 本文深入解析了WCF Binding模型中的绑定元素,详细介绍了信道、信道管理器、信道监听器和信道工厂的概念与作用。从对象创建的角度来看,信道管理器负责信道的生成。具体而言,客户端的信道通过信道工厂进行实例化,而服务端则通过信道监听器来接收请求。文章还探讨了这些组件之间的交互机制及其在WCF通信中的重要性。 ... [详细]
  • 本文介绍了如何利用 Delphi 中的 IdTCPServer 和 IdTCPClient 控件实现高效的文件传输。这些控件在默认情况下采用阻塞模式,并且服务器端已经集成了多线程处理,能够支持任意大小的文件传输,无需担心数据包大小的限制。与传统的 ClientSocket 相比,Indy 控件提供了更为简洁和可靠的解决方案,特别适用于开发高性能的网络文件传输应用程序。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • 在 Linux 环境下,多线程编程是实现高效并发处理的重要技术。本文通过具体的实战案例,详细分析了多线程编程的关键技术和常见问题。文章首先介绍了多线程的基本概念和创建方法,然后通过实例代码展示了如何使用 pthreads 库进行线程同步和通信。此外,还探讨了多线程程序中的性能优化技巧和调试方法,为开发者提供了宝贵的实践经验。 ... [详细]
  • Objective-C 中的委托模式详解与应用 ... [详细]
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社区 版权所有