Search code examples
androidandroid-appcompatandroidx

how I can update SearchView?


I'm using createVoiceAppSearchIntent function from SearchView and this method still using PendingIntent.FLAG_ONE_SHOT and is crashing my app.

Causing Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.

There's something that I can do about?

Here is the log:

Fatal Exception: java.lang.IllegalArgumentException: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
       at android.app.PendingIntent.checkFlags(PendingIntent.java:382)
       at android.app.PendingIntent.getActivityAsUser(PendingIntent.java:465)
       at android.app.PendingIntent.getActivity(PendingIntent.java:451)
       at android.app.PendingIntent.getActivity(PendingIntent.java:415)
       at androidx.appcompat.widget.SearchView.createVoiceAppSearchIntent(SearchView.java:1594)
       at androidx.appcompat.widget.SearchView.onVoiceClicked(SearchView.java:1251)
       at androidx.appcompat.widget.SearchView$5.onClick(SearchView.java:991)
       at android.view.View.performClick(View.java:7792)
       at android.view.View.performClickInternal(View.java:7769)
       at android.view.View.access$3800(View.java:910)
       at android.view.View$PerformClick.run(View.java:30218)
       at android.os.Handler.handleCallback(Handler.java:938)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loopOnce(Looper.java:226)
       at android.os.Looper.loop(Looper.java:313)
       at android.app.ActivityThread.main(ActivityThread.java:8669)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)

Solution

  • This is due to update required for PendingIntent for apps targeting version 31 or above.

    Try updating androidx.appcompat.widget

    implementation "androidx.appcompat:appcompat:1.5.1"
    

    Not sure what is the exact version that fixed this, but latest will do the work.