因为公司游戏产品需要,使用建造者模式设计开发了这个android桌面快捷方式创建库,本项目简单易用
项目地址:
https://github.com/fanOfDemo/ShortcutLib
git clone https://github.com/fanOfDemo/ShortcutLib.git
或者直接使用gradle,在项目build.gradle配置
allprojects {
repositories {
jcenter()
maven {
url 'https://dl.bintray.com/fanofdemo/maven/'
}
}
}
在module中配置:
compile 'cn.yw.sclib:shortcut_lib:1.0.0'
快速使用shortcut,避免各种ROM适配导致的各种问题,兼顾各种场合下创建快捷方式。
1 使用本地资源icon创建桌面快捷方式
2 使用网络图片作为icon创建桌面快捷方式(二级物理缓存,第一次下载到本地sd卡,第二次直接取sd卡对应目录的图片文件,未考虑大图可能oom的情况,快捷方式的图如果很大的话只能找你们产品要解释了,如果有问题建议提issues)
3 使用drawble创建快捷方式
4 在activity中创建(已知跳转activity,当前app中)
5 在android任何场景跳转到入口activity(目标activity未知,比如模块service中)
//在activity中使用资源logo创建:
new Sc.Builder(this, this.getClass()).
setName("资源创建快捷方式").
setAllowRepeat(false).
setIcon(R.mipmap.ic_launcher).
setCallBack(new ScCreateResultCallback() {
@Override
public void createSuccessed(String createdOrUpdate, Object tag) {
Toast.makeText(MainActivity.this, createdOrUpdate, Toast.LENGTH_SHORT).show();
}
@Override
public void createError(String errorMsg, Object tag) {
Toast.makeText(MainActivity.this, errorMsg, Toast.LENGTH_SHORT).show();
}
}).build().createSc();
//在activity中使用网络图片作为logo创建:
new Sc.Builder(this, this.getClass()).
setAllowRepeat(false).
setName("网络图片快捷方式").
setIcon("http://cdn.duitang.com/uploads/item/201507/22/20150722013722_HceJW.thumb.224_0.jpeg").
setCallBack(new ScCreateResultCallback() {
@Override
public void createSuccessed(String createdOrUpdate, Object tag) {
Toast.makeText(MainActivity.this, createdOrUpdate, Toast.LENGTH_SHORT).show();
}
@Override
public void createError(String errorMsg, Object tag) {
Toast.makeText(MainActivity.this, errorMsg, Toast.LENGTH_SHORT).show();
}
}).build().createSc();
//在service中使用当前app的drawable创建(只能依据上下文获取当前app的入口activity):
PackageManager pm = this.getPackageManager();
ApplicationInfo appInfo = MainActivity.this.getApplicationInfo();
Drawable drawable = appInfo.loadIcon(pm);//当前app的logo
String name = appInfo.loadLabel(pm).toString();//当前app的名称
Intent intent = pm.getLaunchIntentForPackage(appInfo.packageName);//当前app的入口程序
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
new Sc.Builder(this, intent).
setName(name).
setAllowRepeat(true).
setIcon(drawable).
setCallBack(new ScCreateResultCallback() {
@Override
public void createSuccessed(String createdOrUpdate, Object tag) {
Toast.makeText(MainActivity.this, createdOrUpdate, Toast.LENGTH_SHORT).show();
}
@Override
public void createError(String errorMsg, Object tag) {
Toast.makeText(MainActivity.this, errorMsg, Toast.LENGTH_SHORT).show();
}
}).build().createSc();
如果有问题建议提issues,一起完善这个库
如果对你有帮助,可以给我点个star,谢谢