Android - 无法在浏览器中打开URL

时间:2011-03-12 22:28:22

标签: android android-activity android-intent action

我正在尝试在外部浏览器中打开一个链接,所以在我的活动中我有这个代码:

// usual SSL URL such as https://foo.com but very long since it contains OAuth params
final Uri uri = Uri.parse(url); 
startActivity(new Intent(Intent.ACTION_VIEW, uri));

它按预期工作但偶尔会出现此错误。知道为什么以及如何处理它?<​​/ p>

android.content.ActivityNotFoundException: No Activity found to handle Intent 
        { act=android.intent.action.VIEW dat=https://api.foo.com }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
at android.app.Activity.startActivityForResult(Activity.java:2836)
at android.app.Activity.startActivity(Activity.java:2942)
at foo.activity.LoginActivity$2.onPostExecute(LoginActivity.java:128)
at foo.activity.LoginActivity$2.onPostExecute(LoginActivity.java:1)
at android.os.AsyncTask.finish(AsyncTask.java:417)
at android.os.AsyncTask.access$300(AsyncTask.java:127)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:4717)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:3)

我会通过捕获异常并告诉用户获得真正的Android设备来处理它。 : - )

说真的,httpsBrowser app的一部分。我可以看到发生此异常的唯一方法是,如果某人正在运行modded ROM或某些螺旋式Android设备,他们会搞乱浏览器的清单文件。

您还可以使用PackageManagerqueryIntentActivities()提前确定startActivity()来电失败,在这种情况下您可以......嗯......做点什么......

顺便说一句,我假设您的网址是一致的。如果您的网址有所不同,则问题可能出在您偶尔遇到的特定服务器上。如果它发出重定向到不是标准浏览器MIME类型之一的HTTPS URL,那么我可以看到发生此错误。在这种情况下,您可以考虑记录让您感到悲伤的URL,看看是否在那里看到了一种模式。