需要从shortcuts.xml接收自定义意图以调用活动中的自定义方法

时间:2017-02-07 07:59:58

标签: android xml android-intent

嘿我一直试图在InComingShortcuts.java中收到自定义意图

public class InComingShortcuts extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    SharedPreferences setting = context.getSharedPreferences("settings", 0);
    String TAG="PocketModeService";
    if(intent.getAction().equals("com.rituj.theoneplus3app.gestures")){
        Log.d(TAG, "Got gestures Broadcast");
    }
}}

从这个shortcuts.xml:

<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
    <shortcut
        android:enabled="true"
        android:icon="@drawable/ic_gestures"
        android:shortcutDisabledMessage="@string/static_shortcut_disabled_message"
        android:shortcutId="static"
        android:shortcutLongLabel="@string/static_shortcut_long_label"
        android:shortcutShortLabel="@string/static_shortcut_short_label">
        <intent
            android:action="com.rituj.theoneplus3app.gestures"/>
    </shortcut>

</shortcuts>

和AndroidManifest看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="packagename">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="App LAbel"
        android:supportsRtl="true"
        android:theme="@style/AppThemeLight">

        <receiver
            android:name="com.rituj.theoneplus3app.InComingShortcuts"
            android:enabled="true">
            <intent-filter>
                <action android:name="com.rituj.theoneplus3app.gestures" />
            </intent-filter>
        </receiver>

        <activity
            android:name=".Home"
            android:label="Label"
            android:theme="@style/AppThemeLight"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

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

    </manifest>

我正在尝试实现Android Nougat 7.1.1应用程序快捷方式。 它只是没有收到该名称的任何意图。 任何帮助,将不胜感激。  如果用户按下该快捷方式,我需要调用一个特定的方法来膨胀不同的布局。我该怎么做呢。

1 个答案:

答案 0 :(得分:0)

我在我的应用中使用了以下内容,您可以在shortcut xmlm中指定intent进行相应更改。

        <intent
        android:action="android.intent.action.VIEW"
        android:data="some data"
        android:targetPackage="com.x.y.z.debug"
        android:targetClass="com.x.y.z.XYZActivity" />

注意com.x.y.z可以以&#39; debug&#39;结束。如果作为调试版本运行