首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在特定设备上将视频附加到彩信意图失败

在特定设备上将视频附加到彩信意图失败
EN

Stack Overflow用户
提问于 2012-12-18 22:08:47
回答 2查看 1K关注 0票数 0

我在通过mms intent附加视频文件(总是小于100KB)时遇到了问题。虽然这在karbonn A21 (ICS4.0.4)上工作得很好,但在HTC (ICS4.0.3)和lg-p920 (2.2.2)上连接失败。我收到类似“无法将视频附加到消息”之类的祝酒词

这是我的代码

代码语言:javascript
复制
Uri uri = Uri.fromFile(videoFile);

Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("video/3gp");
sendIntent.setClassName("com.android.mms", "com.android.mms.ui.ComposeMessageActivity");
sendIntent.putExtra("sms_body", "some text here");
sendIntent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(sendIntent);

关于我能做什么的任何提示/线索/指示都会很有帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-19 12:01:40

这个问题的原因是因为在视频/图片中需要添加到画廊:

读取代码

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android-apps/2.3.3_r1/com/android/mms/ui/ComposeMessageActivity.java

在addAttachment部件中,我看到

代码语言:javascript
复制
  String path = c.getString(c.getColumnIndexOrThrow(Images.Media.DATA));
    mSrc = path.substring(path.lastIndexOf('/') + 1);
    mContentType = c.getString(c.getColumnIndexOrThrow(
    mages.Media.MIME_TYPE));
    if (TextUtils.isEmpty(mContentType)) {
    throw new MmsException("Type of media is unknown.");
    })

我们看到的信息抛得不清楚,引起了误解。

要解决此问题,您需要将文件添加到库中,将URI get从contentResolver.insert传递到Intent with key Intent.EXTRA_STREAM

我在使用彩信时的另一个经验,默认的Activity类用于在设备和制造商之间发送彩信更改,因此setClass com.android.mms.ui.ComposeMessageActivity并不总是正确的,它可能导致ActivityNotFoundException。当它发生时,您必须调用setPackge("com.android.mms")并移除setClass调用。希望它能帮上忙

票数 2
EN

Stack Overflow用户

发布于 2013-02-11 14:44:44

到目前为止,我的方法是让用户通过gmail、youtube等分享视频,同时还可以选择通过mms进行分享

代码语言:javascript
复制
ContentValues content = new ContentValues(4);
content.put(Video.VideoColumns.TITLE, "Cool Video");
content.put(Video.VideoColumns.DATE_ADDED,
            System.currentTimeMillis() / 1000);
content.put(Video.Media.MIME_TYPE, "video/3gp");
content.put(MediaStore.Video.Media.DATA, videoFile.getAbsolutePath());

ContentResolver resolver = parentActivity.get().getContentResolver();

//I use two URI's. One for the intent with mms(MMSUri) and the   
//other(ShareURi) is for sharing video with other social apps like
//gmail, youtube, facebook etc. 
Uri ShareUri = resolver.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,content);
Uri MMSUri = Uri.fromFile(videoFile);

List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(sendIntent, 0);
if(!resInfo.isEmpty())
{
    for (ResolveInfo resolveInfo : resInfo) 
    {
        String packageName = resolveInfo.activityInfo.packageName;
        Intent targetIntent = new Intent(Intent.ACTION_SEND);
        targetIntent.setType("video/3gp");
        targetIntent.setPackage(packageName);

        if(packageName.contains("mms"))
        {
             targetIntent.putExtra("sms_body", "Some text here");
             targetIntent.putExtra(Intent.EXTRA_STREAM, MMSUri);
        }
        else
        {
            targetIntent.putExtra(Intent.EXTRA_SUBJECT, "I can has videos?");
            targetIntent.putExtra(Intent.EXTRA_TITLE, "Some title here");
            targetIntent.putExtra(Intent.EXTRA_TEXT,"You have gots to watch this");
            targetIntent.putExtra(Intent.EXTRA_STREAM, ShareUri);
        }
        targetedIntents.add(targetIntent);
    }           

    Intent chooserIntent = Intent.createChooser(targetedIntents.remove(0), "Select app to share");
    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedIntents.toArray(new Parcelable[]{}));

    startActivity(chooserIntent);
    return;
}

Toast.makeToast(this, "No intents found for this action", Toast.LENGTH_SHORT, Gravity.CENTER).show();

我尝试为Intent.createChooser填充我自己的目标意图,我知道只有这些意图才能在附加/上传我的视频时起作用

编辑:我不会接受我自己的答案。我最乐观的是外面有更好的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13934739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档