您好,我有一个使用Assist API打开的应用程序,它适用于4.1至5.1.1,但是在android M dev预览版中,当我向上滑动主屏幕按钮时,屏幕上显示了卡片,却没有显示选择内容我想使用的应用程序如何在我的代码继承人的Java类中解决此问题:

package com.d4a.toolbelt;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import com.d4a.toolbelt.R;

public class QuickLaunch extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_quick_launch);
    }

     /** Called when the user clicks the  music button */
     public void music(View view) {
         Intent intent = new Intent("android.intent.action.MUSIC_PLAYER");
         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
         startActivity(intent);


     }





/** Called when the user clicks the play button */
public void play(View view) {
    Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.android.vending");
    startActivity(launchIntent);
    }



/** Called when the user clicks the web button */
public void web(View view) {
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://google.com/"));
      startActivity(browserIntent);

}

       /** Called when the user clicks the email button */
public void email(View view) {
     Intent intent = getPackageManager().getLaunchIntentForPackage("com.google.android.gm");
     startActivity(intent);

}

/** Called when the user clicks the sms button */
public void chat(View view) {
    Intent intent = new Intent(Intent.ACTION_MAIN);
 intent.setComponent(new ComponentName("com.d4a.sms","de.ub0r.android.smsdroid.ConversationListActivity"));
 intent.putExtra("grace", "Hi");
 startActivity(intent);


}


/** Called when the user clicks the settings button */
public void settings(View view) {
     Intent intent = getPackageManager().getLaunchIntentForPackage("com.android.settings");
     startActivity(intent);

}




/** Called when the user clicks the camara button */
public void cam(View view) {
    Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
    startActivityForResult(intent, 0);

}

/** Called when the user clicks the video camara button */
public void video_cam(View view) {
    Intent intent = new Intent("android.media.action.VIDEO_CAPTURE");
    startActivityForResult(intent, 0);

}
/** Called when the user clicks the google now  button */
public void now(View view) {
Intent intent = getPackageManager().getLaunchIntentForPackage("com.google.android.googlequicksearchbox");
startActivity(intent);

}

}

这是我的清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.d4a.toolbelt"
    android:versionCode="5"
    android:versionName="1.5" >

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="22" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.d4a.toolbelt.QuickLaunch" android:launchMode="singleInstance" android:theme="@style/Theme.Transparent">
                      <intent-filter>
                <action android:name="android.intent.action.ASSIST" />
                <action android:name="android.intent.extra.ASSIST_CONTEXT" />
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </activity>
    </application>

</manifest>

任何帮助都是极好的

提前致谢!

最佳答案

长按棉花糖设备中的主页按钮时,它将调用默认的辅助应用程序,该应用程序在“设置”>“应用程序”>“配置应用程序”(工具栏上的设置图标)>“默认应用程序”>“辅助和语音输入”>“辅助应用程序”中进行设置。

java - 如何使用Assist API Android M-LMLPHP

您可以检查您的应用程序是否设置为默认的Assist App,并可以通过 Activity 中的以下代码将用户重定向到设置屏幕,用户可以在其中选择默认的Assist app。

        String assistant =
                Settings.Secure.getString(getContentResolver(),
                        "voice_interaction_service");

        boolean areWeGood = false;

        if (assistant != null) {
            ComponentName cn = ComponentName.unflattenFromString(assistant);

            if (cn.getPackageName().equals(getPackageName())) {
                areWeGood = true;
            }
        }

        if (areWeGood) {
           // your app has already been set as Assist app.
            finish();
        } else {
            // your app has not been set as Assist app. Redirect user to the settings screen.
            startActivity(new Intent(Settings.ACTION_VOICE_INPUT_SETTINGS));
        }

07-24 09:18