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

时间:2014-08-15 21:35:37

标签: android android-layout android-widget android-launcher

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

enter image description here enter image description here

所以我想创建一个行为和看起来像快捷方式的小部件,并与用户的启动器保持一致。

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

2 个答案:

答案 0 :(得分:5)

AppWidgets之外,Android还有一个Launcher快捷方式的概念,通常分组在“Widget”标签下。 Dropbox文件夹是Launcher Shortcut。

快捷方式很简单,所有数据(图标,标签,意图)都是静态的,在创建时确定。它们无法动态更新,调整大小或滚动。但它们与发射器样式匹配(并且可以放置在文件夹或扩展坞内)并且使用的资源少于AppWidget s。

可悲的是,他们的记录很差。您可以在ApiDemos / src / com / example / 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 _...项目)中对它们进行引用

您需要ActivityAndroidManifest intent-filter来处理创建快捷方式:

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);

答案 1 :(得分:1)

  

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

有数百个主屏幕实现。主屏幕开发人员可以随心所欲:

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

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