谷歌的 Messenger 应用在发送 MMS 时无法附加图像

32

我无法在谷歌的Messenger应用上发送带有图片的彩信。虽然一些安卓设备默认安装了这个短信应用程序,但当我使用Intent发送MMS时,它不起作用。

问题在于已设置ToNumber和MMS内容,但是图像未附加到该应用程序中。

注意: 我已经在我的设备上设置了MMS APN设置,并且已经在多个设备上检查了同样使用Samsung s4、Motorola G4 Plus等应用程序。

这是我当前使用的代码。

 String toNumbers = "comma seperated mobile numbers";

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) 
    {
        String defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(getActivity()); 

        Intent sendIntent = new Intent(Intent.ACTION_SEND);
        sendIntent.putExtra("address", toNumbers);
        sendIntent.setPackage("com.android.mms");
        //Uri uri = Uri.fromFile(new File(getContext().getExternalFilesDir(""), "image.png"));

        File imagePath = new File(getFilesDir(), "images");
        File newFile = new File(imagePath, "image.png");
        Uri uri = getUriForFile(this, "packagename", newFile);

        File file = new File(contentUri.getPath());
        if (file.exists()) {
            //Do something
            Log.d("TAG","Exist");
        }
        sendIntent.putExtra(Intent.EXTRA_STREAM, uri);
        sendIntent.setType("image/png");
        sendIntent.putExtra("sms_body", getString(R.string.sms_body, HostName));
        if (defaultSmsPackageName != null)
        {
            sendIntent.setPackage(defaultSmsPackageName);
        }
        startActivityForResult(sendIntent, Constants.SEND_SMS_REQUEST);


    }
    else 
    {
        Intent smsIntent = new Intent(android.content.Intent.ACTION_VIEW);
        smsIntent.putExtra("address", toNumbers);
        smsIntent.setPackage("com.android.mms");
        Uri uri = Uri.fromFile(new File(getContext().getExternalFilesDir(""), "image.png"));
        smsIntent.putExtra(Intent.EXTRA_STREAM, uri);
        smsIntent.setType("image/png");
        smsIntent.putExtra("sms_body", getString(R.string.sms_body, HostName));
        startActivityForResult(smsIntent, Constants.SEND_SMS_REQUEST);
    }

file_paths.xml

<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path
    name="files"
    path="images/" />

</paths>

manifeast.xml

->

manifest.xml

<provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="packagename"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/file_paths" />


    </provider>

getExternalFilesDir 返回一个只有你的应用程序拥有权限的目录。没有其他应用程序可以从中读取。您需要通过 FileProvider 公开您的文件。 - Eugen Pechanec
我已经尝试过这个了,但它没有起作用。 - Abhishek Patel
那么,请更新问题,以便我们了解您目前正在使用的内容。您确定已经完成了所有步骤,包括授予临时权限吗?文件路径是否正确?外部文件目录最可能指向 /storage/emulated/0/Android/data/<your app's app ID>/files,这是内部存储而不是SD卡。 - Eugen Pechanec
请提供更新后的问题。 - Abhishek Patel
你分享的文件是由你的应用程序创建的吗? - Pr38y
显示剩余3条评论
1个回答

1
file_paths.xmlmanifest.xml与您的代码中的相同。
创建内容URI:
File imagePath = new File(getFilesDir(), "images");
File newFile = new File(imagePath, "image.png");
Uri contentUri = FileProvider.getUriForFile(this, "packagename", newFile);

检查内容 URI:
ImageView imageView = (ImageView) findViewById(R.id.imageview);
//Your image should be displayed
imageView.setImageURI(contentUri);

创建意图:
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "Text to send");
sendIntent.putExtra(Intent.EXTRA_STREAM, contentUri);
sendIntent.setType("image/png");

测试方案适用于:

a) Galaxy S4, Android 5.0, Messenger 版本: 1.9.036

b) 模拟器: Nexus 5, Android 6.0, Messaging 版本: 1.0.001


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接