How to use Assist API android m

Hello I have an app that opens with the Assist API, it works from 4.1 to 5.1.1, however, in the Android M preview, when I sit on the home button, I get the maps on the screen and I don't get the select option. which application i want to use How to fix this in my code, my java class:

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

} 

}

      

and heres my manifest:

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

      

any help would be awesome

Thanks in advance!

+3


source to share


2 answers


just head. My app works again in M ​​preview 2 and 3 without any changes!



Hope this helps someone else!

0


source


When you press the home button on your Marshmallow device for a long time, it brings up the Default Assistant app, which is installed in Settings> Apps> Customize Apps (Settings icon in the toolbar)> Default Apps > "Assistant" and "Voice Input"> "Assistant".

Assistant settings screen



You can check if your app is installed as default support app or not and can redirect user to settings screen with below code in your action where user can select default app for support.

        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));
        }

      

+3


source







All Articles