Android 共享意图无法启动

Posted

技术标签:

【中文标题】Android 共享意图无法启动【英文标题】:Android Sharing Intent cannot start 【发布时间】:2014-03-26 15:27:40 【问题描述】:

我正在编写一个 android 应用程序,以使用共享 Intent 将 mp4 格式的视频从 sdcard 上传到 youtube。当我第一次安装到我的手机时,它运行完美。但是,在我重新启动应用程序后,我无法再次共享它。如果我分享到whatsapp,就会出现“分享失败”。如果我点击 youtube,我会在 logcat 上收到“无媒体 uri(s)”消息。在同一部手机上重新安装或重启手机都无法解决问题。

即使我以相同的代码将应用程序安装到其他 android 设备,它也只能完美运行一次。当我重新启动应用程序时,发生了同样的问题。

我从这个网站得到了代码: Trouble with youtube upload

这是我的代码:

findViewById(R.id.button2).setOnClickListener(new Button.OnClickListener() 

        @Override
        public void onClick(View v) 

            Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);

            sharingIntent.setType("video/*");

            ContentValues content = new ContentValues(4);
            content.put(Video.VideoColumns.DATE_ADDED,
            System.currentTimeMillis() / 1000);
            content.put(Video.Media.MIME_TYPE, "video/mp4");
            content.put(MediaStore.Video.Media.DATA, Environment.getExternalStorageDirectory().getAbsolutePath()+"/myVideo/myVideoTemp.mp4");
            ContentResolver resolver = getBaseContext().getContentResolver();
            Uri uri = resolver.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, content);


            sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,"");
            sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT,"");
            sharingIntent.putExtra(android.content.Intent.EXTRA_TITLE,"");
            sharingIntent.putExtra(android.content.Intent.EXTRA_STREAM,uri);


            startActivity(Intent.createChooser(sharingIntent,"Share video"));
                 

    );   

附言logcat上红色没有错误

添加sharingIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);后问题解决

【问题讨论】:

您是否尝试过用您的程序分析android.intentintercept 的问题,并将结果与​​上传的其他程序进行比较? 【参考方案1】:

尝试以下方法来调用“共享”应用程序:

//Use the URI that points to the video file, in my case, the video file is in local storage (sd card)
Uri fileUri = Uri.fromFile(videoFile);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
//Use the setDataAndType method to provide the URI and MIME type to the file
//Please note, you need to use setDataAndType method to make it work
intent.setDataAndType(fileUri,URLConnection.guessContentTypeFromName(fileUri.toString()));
startActivity(intent);

我有一个博客来展示如何使用本地存储的视频文件从应用调用视频播放器。它可能会有所帮助:

http://software.intel.com/en-us/blogs/2014/03/20/video-playing-with-android-media-player

【讨论】:

如果我使用您的代码,是否需要在 android manifest.xml 中添加任何特殊内容? 我的代码从 sd 卡读取视频文件。因此,如果您从 sd 卡读取内容,则需要向 Android 清单文件添加以下权限:

以上是关于Android 共享意图无法启动的主要内容,如果未能解决你的问题,请参考以下文章

getActivity() 调用导致 RuntimeException:无法启动意图 Intent act=android.intent.action.MAIN

使用 Koin 时无法通过显式意图启动活动(Koincontext 已启动)

Android 26无法启动接收器com.google.android.gcm.GCMBroadcastReceiver:java.lang.IllegalStateException:不允许启动服务

无法启动服务意图

从网站下载 apk 时无法通过意图启动电子邮件

无法为广播意图启动应用程序