【问题标题】:How to support shortcut pinning in a custom Launcher?如何在自定义启动器中支持快捷方式固定?
【发布时间】:2020-02-23 19:03:48
【问题描述】:

我正在制作自己的 Android 启动器,我想响应来自其他应用程序的请求以添加到主屏幕的快捷方式。

到目前为止,我只能发现,应用程序必须通过从 ShortcutManager 调用 isRequestPinShortcutSupported() 来检查是否支持快捷方式固定,然后通过调用 requestPinShortcut() 发送请求 - 但我该如何实现另一边那个?

我不知道如何告诉 ShortcutManager 我的启动器想要接收这些请求以及在哪里处理它们。我曾尝试注册各种 BroadcastReceiver,但这还不够。

我能找到的唯一有用的东西是 LauncherApps.PinItemRequest,它可以从 Intent 创建,但我找不到如何接收这个 Intent。

【问题讨论】:

    标签: java android android-launcher homescreen android-shortcut


    【解决方案1】:

    好的,我不得不为此研究 android 源代码,但我发现我需要创建一个这样的 Activity:

    <activity android:name=".Activities.AddShortcutActivity">
        <intent-filter>
            <action android:name="android.content.pm.action.CONFIRM_PIN_SHORTCUT" />
        </intent-filter>
     </activity>
    

    然后在那个 Activity 的 onCreate() 中我可以调用

    LauncherApps().getPinItemRequest( this.getIntent() );
    
    //handle request...
    
    this.finish();
    

    并根据该请求做我需要的任何事情。希望这对某人有所帮助。

    【讨论】:

    • 感谢您的回答。你可能还记得,你在已经创建的活动中添加了这个意图过滤器吗?我问是因为我使用单一活动应用方法。
    • 没问题。嗯......我不完全理解 Activity 系统或者你为什么只想要一个 Activity 但我想如果你允许那个 Activity 的更多实例并检测它是用什么意图创建的,它就可以工作。如果您的 Activity 是单实例,它可能会对现有实例执行您不想要的操作,因为您必须在 onCreate() 中处理它。就个人而言,我不认为有一个额外的 Activity 在它打开后立即关闭(通过调用 finish() 函数)即使你坚持一个 Activity-app 方法也没什么大不了的。
    猜你喜欢
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多