在当前Android同比于IOS的优点中,Android系统的桌面Widget、消息管理器、功能开放所带来的便捷无疑是提升用户体验的重要一点。
今天给大家带来关于创建桌面快捷方式的知识点,包括创建文件快捷方式、创建APK快捷方式以及一些注意事项。
众所周知,我们能在所有程序里看到应用的图标是因为我们将程序的入口类
在AndroidManiest设置为:<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
后系统会自动为我们在所有程序里添加图标。
但以上方法无法做到将快捷方式添加到Launcher的桌面上(比如UC、QQ都有增加桌面快捷方式的功能)
一、增加桌面快捷方式
我们可以通过如下方法添加:
1.打开权限:在AndroidManifest.xml中添加权限:com.android.launcher.permission.INSTALL_SHORTCUT
2.制作Intent:
1>Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
2>// 快捷方式的"名称"
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.name_xxx));
// 快捷方式的"图标"
ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.icon);
shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);
3>// 指定要"做什么" 的Intent
简单的,我们可以创建电话快捷方式、邮件快捷方式、短信快捷方式等
Uri uri = Uri.parse("tel:0800000123");
Intent myIntent = new Intent(Intent.ACTION_DIAL, uri);
其次,我们可以创建不同类型文件的快捷方式
Intent myIntent = new Intent(mimetype, uri/*文件绝对路径或者数据库路径*/);
重要的,我们可以对自己的应用创建某个功能模块的快捷方式,一键进入功能,非常方便。
// 指定快捷方式所需要打开的目标类: 如 com.android.xxx.xxx
ComponentName comp = new ComponentName(this.getPackageName()/*包名*/, appClass/*目标类*/);
// 为Intent自定义一个action,此action可以用来辨别进入应用的方式等
String action = "com.action.xxx";
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(action).setComponent(comp));
3.最后,将制作好的过intent通广播发送给launcher
后期,我们还可以进行创建非自身应用的快捷方式、桌面长按列表里的快捷方式等,自己定义的action最重要。
二、删除桌面快捷方式
粗略的删除:
1.打开权限:在AndroidManifest.xml中添加权限:com.android.launcher.permission.UNINSTALL_SHORTCUT
2.制作Intent:同样按照上述的方法,但intent指明为:Intent shortcut = new Intent("com.android.launcher.action.UNINSTALL_SHORTCUT");
3.最后,将制作好的过intent通广播发送给launcher
准确的删除:
通过launcher数据库具体查询吧,还有待自己去进一步搞。
ContentResolver cr = mapViewActivity.getContentResolver();
String AUTHORITY ="com.android.launcher.settings";
final Uri CONTENT_URI = Uri.parse("content://" +AUTHORITY + "/favorites?notify=true");
Cursor c = cr.query(CONTENT_URI,new String[] {"title","iconResource" },"title=?",
new String[] {mapViewActivity.getString(R.string.app_name).trim()}, null);
if(c!=null && c.getCount()>0){
代表存在 ;
}
以上是快捷方式的添加和删除,接下来介绍一些这次用到的解决因增加程序入口引发的栈序紊乱的解决办法。
由于快捷方式、桌面widget等增加入口的方式会导致栈序紊乱,特别是home键返回桌面的问题,那么,解决问题的根本办法就是通过需求的具体分析,设计出在某些时刻的清栈。
我们经常用到的通过launchMode改变activity的运行方式由于改变了activity的特性而变得不够灵活,所以通过API里intent的flag去释放栈空间是最有效的方法。
我们可以利用以下几点:
1.FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP:清除非自己
2.FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_SINGLE_TOP:类似singleTop的效果,只不过是直接弹出栈,直到相应activity到达栈定
3.FLAG_ACTIVITY_NO_HISTORY:无历史性的前行
当然了,这些flag会和很多基础flag有冲突,比如和正常的入口类flag等等,需要择优选择和规避,还有一些其他的flag用法,大家可以去API具体细细研究,API无限可能。
分享到:
相关推荐
在Windows CE(简称WinCE)操作系统中,遇到PDA设备重启后桌面快捷方式消失的问题是常见现象。这可能由于系统清理、错误配置或者特定软件冲突导致。为了解决这个问题,我们可以编写一个C#程序,使其在设备启动时自动...
群晖FileManager是一款强大的远程文件管理工具,专为群晖NAS(网络附加存储)用户设计,提供了便捷、高效的方式来管理和组织存储在群晖设备上的数据。该工具的主要特点是其直观的界面和丰富的功能集,使用户能够轻松...
在C++编程中,创建菜单和桌面快捷方式是常见的任务,尤其在开发Windows应用程序时。以下将详细讲解如何实现这两个功能。 首先,我们要理解菜单在C++中的工作原理。在Windows API中,菜单是由资源定义的,这些资源...
WINCE下第三方软件添加进系统及桌面快捷方式重启不消失定制 WINCE 作为一个嵌入式操作系统,需要在实际应用中添加第三方软件,以满足不同的需求。然而,在添加第三方软件时,需要解决桌面快捷方式重启不消失的问题...
下面将详细介绍`FileManager`的一些关键知识点。 1. **初始化** `FileManager`是单例类,可以通过`default`属性获取默认的文件管理器实例: ```swift let fileManager = FileManager.default ``` 2. **路径...
《 FileManager:在线文件管理的深度探索》 在线文件管理,作为一种高效便捷的文件处理方式,已经成为现代工作生活的重要组成部分。FileManager作为一款优秀的在线文件管理工具,它的出现极大地优化了我们对电子...
本文将深入探讨Channel File Manager的使用方法以及WAD文件的相关知识。 首先,我们来理解一下WAD文件。WAD文件是WII系统中的核心组成部分,它存储了各种应用程序、频道和补丁。这些文件可以是官方发布的更新,也...
Synology File Manager
在Windows 7操作系统中,桌面快捷方式是一种便捷的手段,让用户快速访问常用的应用程序、文件或文件夹。快捷方式本质上是指向目标文件的指针,它们占用的硬盘空间极小,但能极大地提高用户的工作效率。"win7桌面快捷...
Angular FileManager 采用响应式设计,这意味着它能够适应不同设备的屏幕尺寸,提供良好的用户体验,无论是桌面电脑还是移动设备。它使用 CSS3 Media Queries 和 Flexbox 或 Grid 布局来实现这一功能,确保在各种...
标题 "c# 生成桌面快捷方式 无需调用DLL" 描述了如何在C#编程环境中,不依赖外部DLL库来创建桌面快捷方式的方法。在Windows操作系统中,快捷方式是用户方便访问应用程序或文件的一种方式,而通过编程实现这一功能...
综上所述,"fileManager"是一个基于PHP的Web文件管理器,它集成了文件操作、用户界面、安全防护、性能优化和可维护性设计等多个方面的知识点。通过学习和理解这个项目,开发者不仅可以提升PHP编程技能,还能深入理解...
在C#编程中,创建桌面快捷方式、程序菜单项以及将网页添加到收藏夹是常见的功能需求,这些操作可以通过Windows API调用或者.NET Framework提供的类库来实现。下面将详细介绍这三个知识点。 首先,**创建桌面快捷...
综上所述,"simogeo-Filemanager"是一个强大且灵活的文件管理解决方案,尤其是对于需要在CKEditor中处理多媒体内容的用户而言。通过提供与编辑器的无缝集成,它极大地提升了内容创作者的工作效率,同时也展现了Web...
在本文中,我们将深入探讨如何在Laravel框架中使用`filemanager`来实现高效便捷的文件管理和操作。`Laravel开发-filemanager`是专为Laravel5设计的一个强大的文件管理工具,它提供了一系列实用功能,如重命名、创建...
这篇内容将详细介绍如何在CentOS上设置运行程序的桌面快捷方式,包括创建快捷方式、添加图标以及使用脚本文件。 一、创建快捷方式 1. **创建启动脚本**:首先,你需要一个可执行文件或脚本来启动程序。例如,如果...
这个名为“filemanager-0.0.2.zip”的压缩包,包含了KindEditor的一个重要组件——Kind-FileManager,它为编辑器添加了文件管理功能,使得用户可以方便地上传、管理与编辑文件。 KindEditor的设计理念是简洁高效,...
在实际应用中,"filemanager"可能有多种实现方式,例如Web-based的文件管理系统,适合在线协作和远程访问;或者是在本地设备上运行的桌面应用,提供更直接的交互体验。无论哪种形式,其目标都是为了提供高效、安全的...