Android O固定快捷方式 - CREATE_SHORTCUT意图过滤器

时间:2017-10-10 08:38:57

标签: java android notifications android-8.0-oreo

In the documentation用于新的"固定快捷键" Android O中的功能,他们提到"您还可以创建一个专门的活动,帮助用户创建快捷方式,完成自定义选项和确认按钮"。

我尝试按照文档进行操作,但是当我尝试创建新的快捷方式时,我只看到了默认对话框,而不是我的活动。

这是“清单”中的声明:

    <activity android:name=".ShortcutActivity">
        <intent-filter>
            <action android:name="android.intent.action.CREATE_SHORTCUT"/>
        </intent-filter>
    </activity>

P.S
在文档中,他们还在Gmail应用程序中显示了一个示例 - 如何进入该屏幕?我想看看流程,但我无法找到它。

4 个答案:

答案 0 :(得分:3)

您必须创建一个新的活动作为对话框,然后您可以在该对话框中添加所需的任何选项,并根据需要处理addShortcut方法。

我尝试使用该代码添加和删除动态快捷方式,但它确实有效。

<强>的AndroidManifest.xml

<activity android:name=".DialogActivity"
        android:excludeFromRecents="true"
        android:theme="@style/Theme.AppCompat.Dialog"
        >
...
</activity>

<强> DialogActivity.java

public class DialogActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog);
        this.setFinishOnTouchOutside(false);
        findViewById(R.id.add_button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                addShortcut();
            }
        });
        findViewById(R.id.cancel_button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }
    ...
}

<强> activity_dialog.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_dialog"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.metax.myapplication.DialogActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Do you want to add shortcut?"/>

    <Button
        android:id="@+id/cancel_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_alignParentStart="true"
        android:text="No thanks"/>
    <Button
        android:id="@+id/add_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_alignParentEnd="true"
        android:text="Add me"/>
</RelativeLayout>

答案 1 :(得分:0)

在Java类中插入

private static void sendOntologyToFuseki(DatasetAccessor accessor, OWLOntology owlModel){
        Model model;

        /*
        ..
        conversion from OWLOntology to Model
        ..
        */

        if(accessor != null){
            accessor.add(model);
        }
    }

答案 2 :(得分:0)

要使用ACTION_CREATE_SHORTCUT操作启动快捷方式活动,请长按应用程序图标,然后按小部件图标,您会注意到1x1小部件,点击该按钮即可启动所需的活动。

此外,您还可以从您的应用中明确触发该意图以及某些所需的操作。

答案 3 :(得分:-2)

创建一个新的资源文件:res / xml / shortcuts.xml。这是您创建快捷方式的方法,在您完成清单中的必要更改之后

<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="your package"
          android:targetClass="com.example.myapplication.ComposeActivity" />
         </shortcut>
      <!-- Specify more shortcuts here. -->
    </shortcuts>

清单中,将其添加到活动代码

<meta-data android:name="android.app.shortcuts"
                 android:resource="@xml/shortcuts" />

如果您想阅读更多内容,请参阅此example,它解释了有关固定快捷方式,静态和动态快捷方式的信息。

这是来自谷歌的{{3}},在他们的样本回购