因為公司游戲產品需要,使用建造者模式設計開發了這個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,謝謝