Android 判断快捷方式是否存在
推荐于2016-03-29 · 知道合伙人软件行家
关注
展开全部
可通过getIntent().getAction().equals(Intent.ACTION_CREATE_SHORTCUT)来判断是否存在,如果存在了就不会再创建桌面快捷方式了。
以下是示例代码:
1.创建图标代码:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT"/>
</intent-filter>
</activity>
2.设置快捷方式的图标、名称、事件等属性。
public void createShortCut(){
Intent addShortCut;
if(getIntent().getAction().equals(Intent.ACTION_CREATE_SHORTCUT)){//判断是否需要添加快捷方式
addShortCut = new Intent();
addShortCut.putExtra(Intent.EXTRA_SHORTCUT_NAME , "快捷方式");//快捷方式的名称
Parcelable icon = ShortcutIconResource.fromContext(this, R.drawable.icon);//显示的图片
addShortCut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);//快捷方式激活的activity,需要执行的intent,自己定义
addShortCut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent());
setResult(RESULT_OK, addShortCut);//OK,生成
}else{//取消
setResult(RESULT_CANCELED);
}
}
3.发送广播
Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); //快捷方式的名称
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
shortcut.putExtra("duplicate", false); //不允许重复创建
//指定当前的Activity为快捷方式启动的对象: 如 com.everest.video.VideoPlayer
//注意: ComponentName的第二个参数必须加上点号(.),否则快捷方式无法启动相应程序
// ComponentName comp = new ComponentName(this.getPackageName(), "."+this.getLocalClassName());
// shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp));
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(this,WXEntryActivity.class));//快捷方式的图标
ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher);
shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);
sendBroadcast(shortcut);
以下是示例代码:
1.创建图标代码:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT"/>
</intent-filter>
</activity>
2.设置快捷方式的图标、名称、事件等属性。
public void createShortCut(){
Intent addShortCut;
if(getIntent().getAction().equals(Intent.ACTION_CREATE_SHORTCUT)){//判断是否需要添加快捷方式
addShortCut = new Intent();
addShortCut.putExtra(Intent.EXTRA_SHORTCUT_NAME , "快捷方式");//快捷方式的名称
Parcelable icon = ShortcutIconResource.fromContext(this, R.drawable.icon);//显示的图片
addShortCut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);//快捷方式激活的activity,需要执行的intent,自己定义
addShortCut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent());
setResult(RESULT_OK, addShortCut);//OK,生成
}else{//取消
setResult(RESULT_CANCELED);
}
}
3.发送广播
Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); //快捷方式的名称
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
shortcut.putExtra("duplicate", false); //不允许重复创建
//指定当前的Activity为快捷方式启动的对象: 如 com.everest.video.VideoPlayer
//注意: ComponentName的第二个参数必须加上点号(.),否则快捷方式无法启动相应程序
// ComponentName comp = new ComponentName(this.getPackageName(), "."+this.getLocalClassName());
// shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp));
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(this,WXEntryActivity.class));//快捷方式的图标
ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher);
shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);
sendBroadcast(shortcut);
展开全部
最近一直想找如何判断快捷方式是否已经创建的方法,最后终于结合几家算可以啦,不知道对不对,其实快捷方式信息是保存在com.android.launcher的launcher.db的favorites表中,相关代码:java代码:boolean isInstallShortcut = false ; final ContentResolver cr = context.getContentResolver(); final 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[] {"XXX" }, null);//XXX表示应用名称。 if(c!=null && c.getCount()0){ isInstallShortcut = true ; } /*try { while (c.moveToNext()) { String tmp = ""; tmp = c.getString(0); } } catch (Exception e) { } finally { c.close(); }*/ return isInstallShortcut ; }
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询