当前位置: 首页 > 知识库问答 >
问题:

Android启动WebBrowser Intent产生SecurityException

文寒
2023-03-14

我正在尝试将带有文件的URL发送到带有以下内容的web活动:

public static void startDownloadFileActivity(com.app.model.File file, String link) {
    Uri uri = Uri.parse(link);
    Intent intent = new Intent(Intent.ACTION_VIEW);
    String mime = "*/*";
    MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
    if (mimeTypeMap.hasMimeType(file.getMimeType())) {
        mime = file.getMimeType();
    } else if (mimeTypeMap.hasExtension(MimeTypeMap.getFileExtensionFromUrl(file.getTitle()))) {
        mime = mimeTypeMap.getMimeTypeFromExtension(MimeTypeMap.getFileExtensionFromUrl(file.getTitle()));
    }
    intent.setDataAndType(uri, mime);
    try {
        SDApplication.getInstance().getCurrentActivity().startActivity(intent);
    } catch (ActivityNotFoundException e) {
        Logger.logException(ERROR_TAG, "Can't find activity for mime " + mime + "\nReason:" + e.getMessage(), e);
        ToastUtils.showToast(getContext().getString(R.string.error_no_app_for_mime));
    }
}

但当将意图发送到web浏览器时,会得到以下信息:

Fatal Exception: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.VIEW dat=http://some-stand.com:10012/... typ=*/* cmp=com.google.android.apps.docs/.doclist.documentopener.WebViewOpenActivity } from ProcessRecord{4138e78 8118:com.app/u0a322} (pid=8118, uid=10322) not exported from uid 10123
   at android.os.Parcel.readException(Parcel.java:1627)
   at android.os.Parcel.readException(Parcel.java:1579)
   at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2671)
   at android.app.Instrumentation.execStartActivity(Instrumentation.java:1509)
   at android.app.Activity.startActivityForResult(Activity.java:3963)
   at android.app.Activity.startActivityForResult(Activity.java:3924)
   at android.support.v4.app.FragmentActivity.startActivityForResult(SourceFile:820)
   at android.app.Activity.startActivity(Activity.java:4247)
   at android.app.Activity.startActivity(Activity.java:4215)
   at com.app.utils.FileUtils.startDownloadFileActivity(SourceFile:185)
   at com.app.activities.FilesActivity$1.onItemClick(SourceFile:157)
   at android.widget.AdapterView.performItemClick(AdapterView.java:310)
   at android.widget.AbsListView.performItemClick(AbsListView.java:1145)
   at android.widget.AbsListView$PerformClick.run(AbsListView.java:3066)
   at android.widget.AbsListView$3.run(AbsListView.java:3903)
   at android.os.Handler.handleCallback(Handler.java:739)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:224)
   at android.app.ActivityThread.main(ActivityThread.java:5526)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

我不明白什么权限需要申请打开网址。只有一台设备会产生错误:索尼Xperia。应用程序在Android清单文件中具有互联网权限。

共有1个答案

顾鸣
2023-03-14

在你的AndroidManifest中检查权限。xml。

android.permission.网络

 类似资料:
  • 主要内容:1 创建DefaultMQProducer实例,2 start启动生产者,2.1 getOrCreateMQClientInstance获取或者创建MQClientInstance,2.2 registerProducer注册生产者,3 start启动MQClientInstance,3.1 mQClientAPIImpl#start启动netty客户端,3.2 startScheduledTask启动各种定时任务,基于RocketMQ 4.9.3,详细介绍了RocketMQ的客户端P

  • 我使用PDE产品配置构建了一个equinox服务器应用程序。由于它是一个服务器应用程序,我想立即启动所有捆绑包。启动配置提供“默认自动启动:”选项。我没有为。 我为我们的客户提供了x种不同的产品配置。每个客户都有自己的功能,具体取决于主要软件功能。每个产品配置都基于客户功能,实际上是一种非常简单的清洁方式。但是,由于我想启动所有捆绑包,我必须使用将所有捆绑包添加到产品配置中。 当我从软件中添加或删

  • 每次我重新打开项目和模拟器时,我都必须在命令提示符中运行和吗? 谢谢。

  • 问题内容: 从我在Stack Exchange和其他地方看到的所有内容中,我已经正确设置了所有内容,可以在启动Android OS时启动IntentService。不幸的是,它没有在启动时启动,并且我没有收到任何错误。也许专家可以帮忙… 表现: 用于启动的BroadcastReceiver: 更新:我尝试了下面的几乎所有建议,并;在处理程序中添加了日志记录,但从未记录过任何内容。因此,它甚至还没有

  • 我在工作线程中使用阻止firebase调用的机制来避免回调。 我正在使用一个工作线程(JobIntentService)进行一些初始化进程。JobIntentService在应用程序打开并且只运行一次时启动。下面是我的工作线程代码 我正在使用 错误日志 我只能得到这个日志,因为错误发生在生产中 为什么会发生这种情况? 如何避免? (回调会使代码变得丑陋和凌乱,为了使代码干净,我更喜欢任务。请稍候)

  • 本文向大家介绍android 启动模式:相关面试题,主要包含被问及android 启动模式:时的应答技巧和注意事项,需要的朋友参考一下 1、standard:标准化启动模式 每启动一个Activity,都会重新创建Activity的新的实例,将其放在栈的顶部。不需要考虑这个实例是否已经存在。 每一次启动,它的onCreate()、onStart()、onResume()方法都会被依次调用。 2、s