4

对于我正在构建的应用程序,我希望用户能够在启动应用程序时长按图标。然后,这将为用户打开一个包含不同选项的菜单。这可能吗?在讨论菜单时,我查看了开发人员页面并看到了 ActionMode.Callback 接口。这是否适合应用程序图标而不是应用程序本身?

谢谢。

我试图让它工作,但我无处可去,所以我决定尝试从上下文菜单中访问不同的应用程序。context_home 案例不起作用。能否请你帮忙。

public boolean onContextItemSelected(MenuItem item) {
    AdapterView.AdapterContextMenuInfo info;

    try {

         info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();

        } catch (ClassCastException e) {

                 Log.e(TAG, "bad menuInfo", e);

                 return false;
    }

    Uri noteUri = ContentUris.withAppendedId(getIntent().getData(), info.id);

    switch (item.getItemId()) {

    case R.id.context_open:

    startActivity(new Intent(Intent.ACTION_EDIT, noteUri));

    return true;

    case R.id.context_copy:

    ClipboardManager clipboard = (ClipboardManager)

    getSystemService(Context.CLIPBOARD_SERVICE);

    clipboard.setPrimaryClip(ClipData.newUri(getContentResolver(),"Note",noteUri));

    return true;

    case R.id.context_delete:

    getContentResolver().delete(noteUri,null, null);

    return true;

    case R.id.context_home:

    PackageManager pm = getPackageManager();
    Intent intent = pm.getLaunchIntentForPackage("project,android.project");
    startActivity(intent);
    return true;

    default:
        return super.onContextItemSelected(item);
    }
}
4

3 回答 3

8

使用应用快捷方式(从 API 级别 25 开始)。

  • 找到你的主要活动AndroidManifest.xml
  • 使用定义的快捷方式添加对资源的引用:

    <meta-data android:name="android.app.shortcuts"
               android:resource="@xml/shortcuts" />
    
  • 在引用文件中定义快捷方式:

    <shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
      <shortcut
        android:shortcutId="compose"
        android:enabled="true"
        android:icon="@drawable/compose_icon"
        android:shortcutShortLabel="@string/compose_shortcut_short_label1"
        android:shortcutLongLabel="@string/compose_shortcut_long_label1"
        android:shortcutDisabledMessage="@string/compose_disabled_message1">
        <intent
          android:action="android.intent.action.VIEW"
          android:targetPackage="com.example.myapplication"
          android:targetClass="com.example.myapplication.ComposeActivity" />
        <!-- If your shortcut is associated with multiple intents, include them
             here. The last intent in the list determines what the user sees when
             they launch this shortcut. -->
        <categories android:name="android.shortcut.conversation" />
      </shortcut>
      <!-- Specify more shortcuts here. -->
    </shortcuts>
    
于 2017-04-03T23:45:34.847 回答
2

如果您的应用面向 Android 7.1(API 级别 25)或更高版本,您可以定义应用中特定操作的快捷方式。

按照这个:https ://developer.android.com/guide/topics/ui/shortcuts

于 2018-07-27T18:08:45.743 回答
1

截至 2013 年的 API,您不能。您无法控制启动器。

编辑

Android 7.1 (API 25) 引入了应用快捷方式的概念,这与 OP 之前在 2013 年想要实现的目标相比要少得多。

在此处输入图像描述

于 2013-08-12T15:23:10.373 回答