2017-10-10 64 views
5

In the documentation對於Android O中新的「固定快捷方式」功能,他們提到「您還可以創建一個專門的活動,幫助用戶創建快捷方式,完成自定義選項和確認按鈕」 。Android O固定快捷鍵 - CREATE_SHORTCUT意圖過濾器

我嘗試以下的文件,但是當我試圖創建一個新的快捷方式,我只看到默認的對話,而不是我的活動。

這裏的清單中的聲明:

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

P.S
在本文檔中,他們也展示了在Gmail應用的例子 - 我如何才能到屏幕?我想看看流量,但我找不到它。

+0

你列入該元數據 –

+0

@OriWasserman查看我更新的答案 –

回答

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

的nessicary變化後清單將其添加到活動標籤,

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

如果您想了解更多請參閱本doc它解釋大約固定的快捷方式,靜態和動態的快捷方式。

下面是來自谷歌的example,在他們的樣本回購

+0

這不僅適用於靜態和動態快捷方式嗎?我在問固定的快捷鍵。我的問題不在於創建快捷方式,只是他們提到的自定義活動 –

0

在你的Java類插入

ShortcutManager sM = c.getSystemService(ShortcutManager.class); 

    Intent intent2 = new Intent(c.getApplicationContext(), ShortcutActivity.class); 
    intent2.setAction(Intent.ACTION_VIEW); 
    ShortcutInfo shortcut2 = new ShortcutInfo.Builder(c,MSG_SHORCUT_CUSTOM) 
      .setIntent(intent2) 
      .setShortLabel("ShortLabel") 
      .setLongLabel("LongLaber") 
      .setDisabledMessage("DisabledMessage") 
      .setIcon(Icon.createWithResource(c, R.mipmap.ic_add_outline_short)) 
      .build(); 
    listshortcut.add(shortcut2); 

    Intent pinnedShortcutCallbackIntent = mShortcutManager.createShortcutResultIntent(shortcut2); 
    PendingIntent successCallback = PendingIntent.getBroadcast(context, 0, pinnedShortcutCallbackIntent, 0); 

mShortcutManager.requestPinShortcut(pinShortcutInfo, successCallback.getIntentSender()); 
    sM.setDynamicShortcuts(listshortcut); 
0

爲了用實際行動爲ACTION_CREATE_SHORTCUT,在應用程序圖標長按,再按啓動您的快捷活動小部件圖標,你會注意到一個1x1小部件,你可以在其中啓動你想要的活動。

您也可以明確地火從您的應用程序,意圖以及對一些所需的操作。

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>