您好,我有一个使用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>
任何帮助都是极好的
提前致谢!
最佳答案
长按棉花糖设备中的主页按钮时,它将调用默认的辅助应用程序,该应用程序在“设置”>“应用程序”>“配置应用程序”(工具栏上的设置图标)>“默认应用程序”>“辅助和语音输入”>“辅助应用程序”中进行设置。
您可以检查您的应用程序是否设置为默认的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));
}