728x90

안드로이드 스튜디오에서 MMS 보내는 기능을 테스트 해봤다.


MMS 직접 전송방식은 검색을 해보니 쉽게 구현할 수 있는게 아닌거 같다.

그래서 이 방식으로 보내는 테스트는 안해봤고 Intent.ACTION_SEND 방식으로 테스트를 했다.


이미지 첨부를 안한다면

sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(strAttachUrl));
sendIntent.setType("image/jpg");
두줄은 주석처리하면 된다.


Button mms_send = (Button) findViewById(R.id.btn_mms);
mms_send.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        String strPhone = "010-1234-5580";
        String strMessage = "전화주셔서 감사합니다.\n좋은 하루되세요.\n
            행복한 하루, 즐거운 하루, 즐거운 저녁\n
            행복하세요...\n행복은 마음에서..\n
            행복하세요...\n행복은 마음에서..\n
            행복하세요...\n행복은 마음에서..\n
            행복하세요...\n행복은 마음에서..\n
            행복하세요...\n행복은 마음에서..\n
            행복하세요...\n행복은 마음에서..";
        String strAttachUrl = "file://"+ Environment.getExternalStorageDirectory()+"/test.jpg";

        Uri uri = Uri.parse("file://"+ Environment.getExternalStorageDirectory()+"/test.jpg");
        Log.e("strAttachUrl : ", strAttachUrl);
        Log.e("imagePath : ", uri.getPath());

        Intent sendIntent = new Intent(Intent.ACTION_SEND);
        sendIntent.setClassName("com.android.mms", "com.android.mms.ui.ComposeMessageActivity");
        sendIntent.putExtra("address", strPhone);
        sendIntent.putExtra("sms_body", strMessage);
        sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(strAttachUrl));
        sendIntent.setType("image/jpg");
        sendIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(sendIntent);
    }
});


로그인 처리 기능도 같이 넣어서 테스트를 하느라 AndroidManifest.xml 파일은 아래와 같다.

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.SEND_MMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />



앱 build.grale 에서 컴파일SDK 버전을 26으로 했더니 에러가 발생하면서 발송이 안된다.

카메라로 사진 촬영하여 발송하는 것처럼 이미지 첨부라서 안드로이드 7.0(Nougat) 이상에서 별도로 구현해 줘야 동작이 될 거 같다.

그래서 버전을 23으로 낮추고 테스트를 했더니 발송이 잘 된다.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "25.0.0"

    defaultConfig {
        applicationId "com.tistory.link2me.login"
        minSdkVersion 19
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:support-v4:23.0.0'
    compile 'com.android.support:appcompat-v7:23.0.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.squareup.okhttp3:okhttp:3.9.0'

}


안드로이드 7.0 이상 환경에서 컴파일하는 것도 테스트를 하게되면 적어둘 예정이다.

블로그 이미지

Link2Me

,