在HomeScreen中创建ShortCut

时间:2012-03-05 09:08:38

标签: android shortcut

我有一个可以执行各种功能的应用程序。我想在我的Android手机主屏幕中为最常用的功能创建一个快捷方式。

任何人都可以告诉我(使用代码以及代码实际如何工作)如何创建快捷方式?我见过很多行代码,但我无法理解。请解释一下。

我使用了以下代码=>主要问题是在主屏幕中创建了快捷方式。但当我点击它时,一个Toast显示消息,如“应用程序未安装在您的手机上”。并在日志中显示错误消息

1)WARN / ActivityManager(58):权限 否认:checkComponentPermission()reqUid = 10046 2)WARN / ActivityManager(58):权限拒绝:从ProcessRecord {44f19b88 123:com。启动Intent {act = android.intent.action.VIEW flg = 0x10000000 cmp = aaa / .s bnds = [3,240] [77,319]}}。 android.launcher / 10025}(pid = 123,uid = 10025)需要null 3)ERROR / Launcher(123):启动器没有启动Intent的权限{act = android.intent.action.VIEW flg = 0x10000000 cmp = a.a.a / .s bnds = [3,240] [77,319]}。确保为相应的活动创建MAIN intent-filter或使用此活动的导出属性。 tag = ShortcutInfo(title = Sukumar)intent = Intent {act = android.intent.action.VIEW flg = 0x10000000 cmp = a.a.a / .s bnds = [3,240] [77,319]} 4)ERROR / Launcher(123):java.lang.SecurityException:Permission Denial:从ProcessRecord启动Intent {act = android.intent.action.VIEW flg = 0x10000000 cmp = aaa / .s bnds = [3,240] [77,319]} {44f19b88 123:com.android.launcher / 10025}(pid = 123,uid = 10025)需要null


`package a.a.a;

 import android.app.Activity;
  import android.content.Intent;
    import android.os.Bundle;

public class ShortActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Intent i=new Intent(this,s.class);
    Intent j=new Intent();
    j.putExtra(Intent.EXTRA_SHORTCUT_INTENT, i);
    j.putExtra(Intent.EXTRA_SHORTCUT_NAME,"Sukumar");
    j.putExtra(Intent.EXTRA_SHORTCUT_ICON,R.drawable.icon);
    j.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    this.sendBroadcast(j);


}


}`

1 个答案:

答案 0 :(得分:0)

要在Android主屏幕上创建应用程序快捷方式,我们只需要使用操作com.android.launcher.action.INSTALL_SHORTCUT触发一个简单的Intent。快捷方式的名称和图标,我们可以使用Intent的exrta参数 检查以下方法:

Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intentActivity);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, textShortcut);
Parcelable iconResource = (Parcelable) bitmap;
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, iconResource);
intent.putExtra("duplicate", duplicateNeed); // (duplicateNeed=false)
// will not allow the
// duplicate same name
// shortcuts.
intent.setAction(INSTALL_SHORTCUT_ACTION);
getApplicationContext().sendBroadcast(intent);