如何使用Assist API android m

时间:2015-05-29 00:21:16

标签: java android

你好我有一个应用程序打开使用它适用于4.1到5.1.1的Assist API但是在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>

任何帮助都会很棒

提前致谢!

2 个答案:

答案 0 :(得分:5)

当您长按Marshmallow设备中的主页按钮时,它会调用默认的Assist应用程序,该应用程序设置为&gt;应用&gt;配置应用程序(工具栏上的设置图标)&gt;默认应用&gt;辅助和语音输入&gt;协助应用程序。

Assist App settings screen

您可以检查您的应用是否设置为默认的Assist App,并可以通过活动中的以下代码将用户重定向到设置屏幕,用户可以选择默认的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));
        }

答案 1 :(得分:0)

只是一个头我的应用程序再次在M预览2和3中工作而没有任何变化!

我希望这会帮助其他人!