Android 对于某些设备无法使用的隐式意图,是否有任何解决方案
Android活动具有webview,如果url与upi://匹配,则意图选择器应弹出其与所有设备的工作状态,但某些设备(如带有Android 9的mi)工作不正常 if(url.startsWith(“upi://”){ 如果url以upi://开头,则检查url是否以upi://开头。如果url以upi开头,则选择器会弹出所有程序包名称以upi开头的应用程序。该选项适用于所有设备Android 对于某些设备无法使用的隐式意图,是否有任何解决方案,android,webview,Android,Webview,Android活动具有webview,如果url与upi://匹配,则意图选择器应弹出其与所有设备的工作状态,但某些设备(如带有Android 9的mi)工作不正常 if(url.startsWith(“upi://”){ 如果url以upi://开头,则检查url是否以upi://开头。如果url以upi开头,则选择器会弹出所有程序包名称以upi开头的应用程序。该选项适用于所有设备 @SuppressLint("RestrictedApi") @Override
@SuppressLint("RestrictedApi")
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
if (url.startsWith("upi://")) {
Toast.makeText(home.this, url, Toast.LENGTH_SHORT).show();
webView.stopLoading();
try {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
Intent chooser = Intent.createChooser(intent, "Pay with...");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
startActivityForResult(chooser, 1, null);
}
else
{
Toast.makeText(home.this, "ELSE", Toast.LENGTH_SHORT).show();
}
} catch (android.content.ActivityNotFoundException ex) {
String MakeShortText = "PhonePe have not been installed";
Toast.makeText(home.this, MakeShortText, Toast.LENGTH_SHORT).show();
}
}
return true;
}
});
}
日志
“工作不正常”是什么意思?您的确切症状是什么?我希望您的应用程序在任何缺少支持该URL的
ACTION\u VIEW
活动的设备上崩溃。而且,由于ACTION\u VIEW
的设计不支持startActivityForResult()
,因此您的onActivityResult()
回调方法(如果你有)不太可能得到任何有用的东西。我建议你切换到startActivity()
并将其包装在中尝试/catch
块来处理活动NotFoundException
。我解释了我的问题,请在@commonware检查一下“我解释了我的问题”--如果有什么问题的话,你会让它更加混乱,因为你写了“它使用所有设备”。“它使用所有设备”与“工作不正常”不匹配。那么,你看到了什么?你的应用程序正在崩溃吗?如果是,请使用Logcat检查与崩溃相关的堆栈跟踪。
2019-10-27 18:55:15.781 17960-17960/? E/ChooserActivityInjector: getResolversForIntent [boolean, boolean, interface java.util.List]
java.lang.NoSuchMethodException: getResolversForIntent [boolean, boolean, interface java.util.List]
at java.lang.Class.getMethod(Class.java:2068)
at java.lang.Class.getDeclaredMethod(Class.java:2047)
at com.android.internal.app.ChooserActivityInjector.createSortedResloveListByResolverController(ChooserActivityInjector.java:91)
at com.android.internal.app.ChooserActivityInjector.startInterceptByMiAppStore(ChooserActivityInjector.java:66)
at com.android.internal.app.ResolverActivity.onCreate(ResolverActivity.java:372)
at com.android.internal.app.ChooserActivity.onCreate(ChooserActivity.java:274)
at android.app.Activity.performCreate(Activity.java:7224)
at android.app.Activity.performCreate(Activity.java:7213)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2926)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:201)
at android.app.ActivityThread.main(ActivityThread.java:6810)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)