0

mms インテント経由でビデオ ファイル (常に 100 KB 未満) を添付する際に問題が発生しました。これは karbonn A21 (ICS 4.0.4) では完全に機能しますが、HTC one V (ICS 4.0.3) および lg-p920 (2.2.2) では接続が失敗します。「メッセージにビデオを添付できません」のようなトーストが表示されます

これは私が持っているコードです

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);

私ができることに関するヒント/手がかり/ポインターは役に立ちます。

4

2 に答える 2

2

この問題の原因は、ビデオ/画像でゲラに追加する必要があるためです。

コードを読む

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 部分にフォーカスすると、見ました

  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.");
    })

メッセージが明確ではなく、誤解の原因となっていることがわかりました。

これを解決するには、ファイルをギャラリーに追加し、contentResolver.insert から取得した URI をキー Intent.EXTRA_STREAM を使用して Intent に渡す必要があります。

MMS を使用するときの私のもう 1 つの経験です。デフォルトの Activity クラスは、デバイスと製造元の間で MMS の変更を送信するために使用されるため、setClass com.android.mms.ui.ComposeMessageActivity は常に正しいとは限らず、ActivityNotFoundException が発生する可能性があります。その場合は、setPackge("com.android.mms") を呼び出して setClass 呼び出しを削除する必要があります。それが役立つことを願っています

于 2013-09-19T04:01:40.187 に答える
0

これまでの私のアプローチは、ユーザーが gmail や youtube などを介してビデオを共有し、mms を介して共有するオプションを提供することでした。

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ビデオの添付/アップロードでこれらだけが機能することを知るために、自分のターゲットインテントを設定しようとしています

編集:私は自分の答えを正しいものとして受け入れません。私は最も楽観的ですが、もっと良いものがあると思います

于 2013-02-11T06:44:44.347 に答える