代码之家  ›  专栏  ›  技术社区  ›  Permutohedron

是否可以获得Launcher的快捷布局并在我们自己的小部件中使用它?

  •  2
  • Permutohedron  · 技术社区  · 10 年前

    我注意到,无论我们使用哪个启动器,Dropbox快捷方式(如指定文件夹的小部件)的外观都与快捷方式布局一致:

    enter image description here enter image description here

    所以我想制作这样一个小部件,它的行为和外观都像快捷方式,并且和用户的启动器保持一致。

    是否可以获得Launcher的快捷布局并在我们自己的小部件中使用它?

    2 回复  |  直到 10 年前
        1
  •  6
  •   Kevin TeslaCoil    10 年前

    除了 AppWidgets ,Android也有Launcher Shortcuts的概念,这些快捷方式通常被分组在“Widget”标签下。Dropbox文件夹是Launcher快捷方式。

    快捷方式很简单,所有数据(图标、标签、意图)都是静态的,在创建时确定。它们不能动态更新、调整大小或滚动。但它们与启动器样式匹配(可以放在文件夹或dock中),使用的资源比 AppWidget s

    遗憾的是,它们的记录很差。您可以在ApiDemos/src.com/sample/android/apis/app/LauncherShortcuts.java中找到示例( https://android.googlesource.com/platform/development/+/master/samples/ApiDemos/src/com/example/android/apis/app/LauncherShortcuts.java )以及在 https://developer.android.com/reference/android/content/Intent.html#EXTRA_SHORTCUT_ICON (所有EXTRA_SHORTCUT_…项)。

    你需要一个 Activity AndroidManifest 处理创建快捷方式的意图过滤器:

    AndroidManifest.xml

    <activity
        android:name=".LauncherShortcutActivity" >
        <intent-filter>
            <action android:name="android.intent.action.CREATE_SHORTCUT" />
    
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    

    启动程序将使用 startActivityForResult ,您可以提供一个界面(例如,让用户选择快捷方式应指向的文件夹),但最终必须向启动器返回图标、标签和意图。

    void setResult(CharSequence title, int iconResourceId, Intent targetIntent) {
        Intent data = new Intent();
        data.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(this, iconResourceId));
        data.putExtra(Intent.EXTRA_SHORTCUT_NAME, title);
        data.putExtra(Intent.EXTRA_SHORTCUT_INTENT, targetIntent);
        setResult(Activity.RESULT_OK, data);
        finish();
    }
    

    在这种情况下,图标被指定为应用程序的资源。或者,图标可以是位图(例如联系人照片):

        data.putExtra(Intent.EXTRA_SHORTCUT_ICON, bitmap);
    
        2
  •  1
  •   CommonsWare    10 年前

    是否可以获得Launcher的快捷布局并在我们自己的小部件中使用它?

    有数百种主屏幕实现。主屏幕开发人员可以为所欲为:

    • 他们不必支持应用程序小部件
    • 它们不必支持快捷方式
    • 他们不必具备启动应用程序的能力(例如,单用途设备,如信息亭)
    • 他们不必显示快捷方式或启动程序条目的图标
    • 他们不必为快捷方式或启动程序条目使用文本标题
    • 它们不必为快捷方式或启动程序条目垂直堆叠图标和文本标题

    当然,欢迎您检查各种开源主屏幕实现,并查看它们如何格式化启动程序条目。然而,没有通用的方法来确定它们是否支持快捷方式或启动器,更不用说它们如何格式化这些条目。