长按应用程序图标

时间:2013-08-12 09:11:21

标签: android

对于我正在构建的应用程序,我希望用户能够在启动应用程序时长按该图标。然后,这将为用户显示具有不同选项的菜单。这可能吗?在讨论菜单时,我查看了开发人员页面并看到了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);
    }
}

3 个答案:

答案 0 :(得分:4)

使用App Shortcuts(从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>
    

答案 1 :(得分:1)

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

关注此:https://developer.android.com/guide/topics/ui/shortcuts

答案 2 :(得分:0)

你做不到。你无法控制发射器。