So, I could not replicate, but in addition to the comments, if you do not set the package name
vrIntent.setPackage("com.google.android.googlequicksearchbox");
then it fails, otherwise everything works fine for me.
This is the main work that I used to test it.
package it.versionestabile.stackover001; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.speech.RecognizerIntent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import java.util.ArrayList; import static java.security.AccessController.getContext; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Intent vrIntent = new Intent(RecognizerIntent.ACTION_GET_LANGUAGE_DETAILS); vrIntent.setPackage("com.google.android.googlequicksearchbox"); PackageManager packageManager = getPackageManager(); for (PackageInfo packageInfo: packageManager.getInstalledPackages(0)) { if (packageInfo.packageName.contains("com.google.android.googlequicksearchbox")) Log.d("AAA", packageInfo.packageName + ", " + packageInfo.versionName); } this.sendOrderedBroadcast(vrIntent, null, new BroadcastReceiver() { @Override public void onReceive(final Context context, final Intent intent) {
I tested it both on Android Studio 2.3 and 3.0.1, and on an emulator with APIs 26 and 27.
Everything works fine with the above code.
But if you comment out this line:
vrIntent.setPackage("com.google.android.googlequicksearchbox");
on Oreo it does not work.
And still I suggest checking Google Now with the package manager in a way like this:
PackageManager packageManager = getPackageManager ();
for (PackageInfo packageInfo: packageManager.getInstalledPackages(0)) { if (packageInfo.packageName.contains("com.google.android.googlequicksearchbox")) Log.d("AAA", packageInfo.packageName + ", " + packageInfo.versionName);
To decide if you have the right version of Google Now.
Hope this helps!
shadowsheep
source share