как поместить ярлык активности в панель запуска? - PullRequest
2 голосов
/ 07 ноября 2011

Я пытаюсь сделать что-то, что кратко описано по следующей ссылке:

ссылка

Это означает, что у меня есть действие, которое может быть даже в другом приложении (но сейчас давайте сосредоточимся на действии, которое есть в моем приложении), и я хочу иметь возможность создать для него ярлык.

для терминологии скажем, что действие, которое создает ярлык, называется «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 внутри манифеста. ничего не помогло ...


@ лиро я не думаю, что это имеет значение, так как я указал полный путь к классу, включая имя пакета.


всем, пожалуйста, если у вас есть рабочий проект, это было бы идеально.

Ответы [ 2 ]

2 голосов
/ 08 ноября 2011

Не уверен, что здесь, но я думаю, что вам нужно удалить «com» ​​из «com.MyActivity».

<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 голос
/ 08 ноября 2011

Вместо

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

попробуйте

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

или определите свое действие в фильтре намерений этого действия, которое, я полагаю, вы не сделали.

Эти две ссылки могут быть полезны: http://developer.android.com/reference/android/content/Intent.html#Intent(java.lang.String) http://developer.android.com/guide/topics/manifest/action-element.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...