我的手机安装了两个语音搜索:google app和S-voice app。默认的app是S-voice app,如下图所示。我的问题是,如何在Android6.0中编程使用默认的语音应用。提前感谢
我就是这么做的
private boolean isMyAppLauncherDefault(String myPackageName) {
final IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN);
filter.addCategory(Intent.CATEGORY_HOME);
List<IntentFilter> filters = new ArrayList<IntentFilter>();
filters.add(filter);
List<ComponentName> activities = new ArrayList<ComponentName>();
final PackageManager packageManager = (PackageManager) getPackageManager();
packageManager.getPreferredActivities(filters, activities, null);
for (ComponentName activity : activities) {
Log.d(TAG,"======packet default:==="+activity.getPackageName());
}
for (ComponentName activity : activities) {
if (myPackageName.equals(activity.getPackageName())) {
return true;
}
}
return false;
}
当我的输入是com.samsung.voiceserviceplatform
时,上面的函数总是返回true。在其他情况下,默认的应用程序总是返回com.google.android.googlequicksearchbox
(表示谷歌语音)
4条答案
按热度按时间nlejzf6q1#
DefaultAssistPreference
使用AssistUtils
的一个隐藏方法来检索当前的Assist。您可以使用反射来使用相同的方法:如果你不想使用反射,你可以直接检查系统设置:
读取
AssistUtils
的设置与读取AssistUtils
的设置相同,但如果设置无效,AssistUtils
也有一个备用设置。v7pvogib2#
试试这个。
trnvg8h33#
我尝试Mattia Maestrini中的答案,如果返回的组件是一个活动,它确实可以工作,例如
但如果组件是服务,则会遇到以下问题
我还要补充一点
在清单文件中。
最后在www.example.com网站上使用该方法Activity.java
从Android M添加,可以成功启动助手服务。
lnlaulya4#
如果有人正在寻找一个快速的Kotlin版本:
感谢:https://stackoverflow.com/a/40566276/371749刚刚重写。