如何将活动的快捷方式放入启动器?

时间:2011-11-07 19:23:35

标签: android android-activity shortcut launcher

我正在尝试做一些在下一个链接上简要描述的内容:

link

意思是,我有一个活动甚至可以在另一个应用程序上(但现在让我们专注于我的应用程序所拥有的活动),我希望能够创建它的快捷方式。

对于术语,假设创建快捷方式的活动名为“ShortcutCreatorActivity”,而启动的活动是“MyActivity”。

我从写的内容中得到的是ShortcutCreatorActivity应该在清单中定义为:

<activity android:icon="@drawable/ic_launcher"
  android:label="ShortcutActivity" android:name="com.my_app.ShortcutCreatorActivity">
  <intent-filter>
    <action android:name="android.intent.action.CREATE_SHORTCUT" />
    <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>
</activity>

我在java代码中得到的是:

public class ShortcutCreatorActivity extends Activity
  {
  @Override
  protected void onCreate(final Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    final Intent shortcutIntent=new Intent("com.my_app.MyActivity");
    final ShortcutIconResource iconResource=Intent.ShortcutIconResource.fromContext(this,R.drawable.ic_launcher);
    final Intent intent=new Intent();
    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,shortcutIntent);
    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME,"Shortcut Test");
    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,iconResource);
    setResult(RESULT_OK,intent);
    Toast.makeText(this,"shortcut created",Toast.LENGTH_SHORT).show();
    finish();
    }
  }

但是当我点击快捷方式和日志时,我仍然收到“找不到应用程序”的相同消息:

ActivityManager(232): Starting: Intent { act=com.my_app.MyActivity flg=0x10200000 bnds=[80,150][160,250] } from pid 3956
谁能帮助我吗?缺什么? 我还为清单中的MyActivity活动尝试了一些intent过滤器。什么都没有帮助...


@liro 我认为这不重要,因为我已经指定了类的完整路径,包括包名。


每个人,如果你有一个有效的项目,那将是完美的。

2 个答案:

答案 0 :(得分:2)

此处不确定,但我认为您需要从“com.MyActivity”中删除“com”。

<activity android:icon="@drawable/ic_launcher"
  android:label="ShortcutActivity" android:name=".ShortcutCreatorActivity">
   <intent-filter>
    <action android:name="android.intent.action.CREATE_SHORTCUT" />
    <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>
</activity>

答案 1 :(得分:1)

而不是

final Intent shortcutIntent=new Intent("com.my_app.MyActivity");

final Intent shortcutIntent=new Intent(this, com.my_app.MyActivity.class);

或在该活动的intent-filter中定义您的操作,我相信您可能没有。

这两个链接可能会有所帮助: http://developer.android.com/reference/android/content/Intent.html#Intent(java.lang.Stringhttp://developer.android.com/guide/topics/manifest/action-element.html