Androidはカラーメッセージの送信方法(MMS)を実現し、非呼び出しシステムのカラーメッセージインタフェース


最近、システムインタフェースを呼び出さずにカラーメッセージを送信する必要がある.メールを送る機能をしたことがある人は、StartActivityを使わずにメールを送るように、メールを送るような方法を呼び出すことができるかもしれません.SmsManager smsManager=SmsManagement.getDefault(); smsManager.sendTextMessage(phoneCode, null, text, null, null); 叶えられるかな?答えは否定的です.androidにはカラーメッセージを送信するインタフェースがありません.カラーメッセージを送信したい場合は、申し訳ありません.システムカラーメッセージappインタフェースを呼び出してください.以下のようにします.
view plain copy to clipboard print ?
Intent sendIntent = new Intent(Intent.ACTION_SEND,  Uri.parse("mms://"));  
  •     sendIntent.setType("image/jpeg");  

  •     String url = "file://sdcard//tmpPhoto.jpg";  
  •     sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(url));  

  •     startActivity(Intent.createChooser(sendIntent, "MMS:"));  
    Intent sendIntent = new Intent(Intent.ACTION_SEND, Uri.parse("mms://")); sendIntent.setType("image/jpeg"); String url = "file://sdcard//tmpPhoto.jpg"; sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(url)); startActivity(Intent.createChooser(sendIntent, "MMS:"));
     
                     ,          ,         ?       ,         。

    第一歩:まず、androidソースのMMSアプリケーションからmmsを使用するpduを構築するために送信するカラーメッセージの内容を構築します.pduパッケージからcopyが出てきました.pduパッケージのすべてのクラスを
             ,        。
    
      
      
      
      
    view plain copy to clipboard print ?
    1.    final SendReq sendRequest = new SendReq ();  
    2.    final PduBody pduBody = new PduBody();  
    3. final PduPart part = new PduPart();// , part, , body add part。   
    4.    pduBody.addPart(partPdu);  
    5.    sendRequest.setBody(pduBody);  
    6.    final PduComposer composer = new PduComposer(ctx, sendRequest);  
    7. final byte[] bytesToSend = composer.make(); // byte , http  "http://mmsc.monternet.com";  
    final SendReq sendRequest = new SendReq (); final PduBody pduBody = new PduBody(); final PduPart part = new PduPart();// , part, , body add part。 pduBody.addPart(partPdu); sendRequest.setBody(pduBody); final PduComposer composer = new PduComposer(ctx, sendRequest); final byte[] bytesToSend = composer.make(); // byte , http "http://mmsc.monternet.com";
     
     
        :
     
       pdu   :
     
      
      
      
      
    view plain copy to clipboard print ?
    1.  String subject = " ";  
    2.             String recipient = " ";//138xxxxxxx   
    3.             final SendReq sendRequest = new SendReq();  
    4.             final EncodedStringValue[] sub = EncodedStringValue.extract(subject);  
    5.             if (sub != null && sub.length > 0) {  
    6.                 sendRequest.setSubject(sub[0]);  
    7.             }  
    8.             final EncodedStringValue[] phoneNumbers = EncodedStringValue.extract(recipient);  
    9.             if (phoneNumbers != null && phoneNumbers.length > 0) {  
    10.                 sendRequest.addTo(phoneNumbers[0]);  
    11.             }  
    12.             final PduBody pduBody = new PduBody();  
    13.             final PduPart part = new PduPart();  
    14.             part.setName("sample".getBytes());  
    15.             part.setContentType("image/png".getBytes());  
    16.             String furl = "file://mnt/sdcard//1.jpg";  
    17.   
    18.                     final PduPart partPdu = new PduPart();  
    19.                     partPdu.setCharset(CharacterSets.UTF_8);//UTF_16   
    20.                     partPdu.setName(part.getName());  
    21.                     partPdu.setContentType(part.getContentType());  
    22.                     partPdu.setDataUri(Uri.parse(furl));  
    23.                     pduBody.addPart(partPdu);     
    24.   
    25.             sendRequest.setBody(pduBody);  
    26.             final PduComposer composer = new PduComposer(ctx, sendRequest);  
    27.             final byte[] bytesToSend = composer.make();  
    28.   
    29.             Thread t = new Thread(new Runnable() {  
    30.   
    31.                 @Override  
    32.                 public void run() {  
    33.                     try {  
    34.                         HttpConnectInterface.sendMMS(ctx,  bytesToSend);  
    35. //   
    36.                     } catch (IOException e) {  
    37.                         e.printStackTrace();  
    38.                     }  
    39.                 }  
    40.             });  
    41.             t.start();  
    42. pdu :  
    43.         public static String mmscUrl = "http://mmsc.monternet.com";  
    44. //  public static String mmscUrl = "http://www.baidu.com/";   
    45.     public static String mmsProxy = "10.0.0.172";  
    46.     public static String mmsProt = "80";  
    47.   
    48.        private static String HDR_VALUE_ACCEPT_LANGUAGE = "";  
    49.     // Definition for necessary HTTP headers.   
    50.        private static final String HDR_KEY_ACCEPT = "Accept";  
    51.        private static final String HDR_KEY_ACCEPT_LANGUAGE = "Accept-Language";  
    52.   
    53.     private static final String HDR_VALUE_ACCEPT =  
    54.         "*/*, application/vnd.wap.mms-message, application/vnd.wap.sic";  
    55. public static byte[] sendMMS(Context context, byte[] pdu)throws IOException{  
    56.         HDR_VALUE_ACCEPT_LANGUAGE = getHttpAcceptLanguage();  
    57.   
    58.         if (mmscUrl == null) {  
    59.             throw new IllegalArgumentException("URL must not be null.");  
    60.         }  
    61.   
    62.         HttpClient client = null;  
    63.         try {  
    64.             // Make sure to use a proxy which supports CONNECT.   
    65.             client = HttpConnector.buileClient(context);  
    66.             HttpPost post = new HttpPost(mmscUrl);  
    67.             //mms PUD START   
    68.             ByteArrayEntity entity = new ByteArrayEntity(pdu);  
    69.             entity.setContentType("application/vnd.wap.mms-message");  
    70.             post.setEntity(entity);  
    71.             post.addHeader(HDR_KEY_ACCEPT, HDR_VALUE_ACCEPT);  
    72.             post.addHeader(HDR_KEY_ACCEPT_LANGUAGE, HDR_VALUE_ACCEPT_LANGUAGE);  
    73.             //mms PUD END   
    74.             HttpParams params = client.getParams();  
    75.             HttpProtocolParams.setContentCharset(params, "UTF-8");  
    76.             HttpResponse response = client.execute(post);  
    77.   
    78.             LogUtility.showLog(tag, "111");  
    79.             StatusLine status = response.getStatusLine();  
    80.             LogUtility.showLog(tag, "status "+status.getStatusCode());  
    81.             if (status.getStatusCode() != 200) { // HTTP 200 is not success.   
    82.                 LogUtility.showLog(tag, "!200");  
    83.                 throw new IOException("HTTP error: " + status.getReasonPhrase());  
    84.             }  
    85.             HttpEntity resentity = response.getEntity();  
    86.             byte[] body = null;  
    87.             if (resentity != null) {  
    88.                 try {  
    89.                     if (resentity.getContentLength() > 0) {  
    90.                         body = new byte[(int) resentity.getContentLength()];  
    91.                         DataInputStream dis = new DataInputStream(resentity.getContent());  
    92.                         try {  
    93.                             dis.readFully(body);  
    94.                         } finally {  
    95.                             try {  
    96.                                 dis.close();  
    97.                             } catch (IOException e) {  
    98.                                 Log.e(tag, "Error closing input stream: " + e.getMessage());  
    99.                             }  
    100.                         }  
    101.                     }  
    102.                 } finally {  
    103.                     if (entity != null) {  
    104.                         entity.consumeContent();  
    105.                     }  
    106.                 }  
    107.             }  
    108.             LogUtility.showLog(tag, "result:"+new String(body));  
    109.             return body;  
    110.         }  catch (IllegalStateException e) {  
    111.             LogUtility.showLog(tag, "",e);  
    112. //            handleHttpConnectionException(e, mmscUrl);   
    113.         } catch (IllegalArgumentException e) {  
    114.             LogUtility.showLog(tag, "",e);  
    115. //            handleHttpConnectionException(e, mmscUrl);   
    116.         } catch (SocketException e) {  
    117.             LogUtility.showLog(tag, "",e);  
    118. //            handleHttpConnectionException(e, mmscUrl);   
    119.         } catch (Exception e) {  
    120.             LogUtility.showLog(tag, "",e);  
    121.             //handleHttpConnectionException(e, mmscUrl);   
    122.         } finally {  
    123.             if (client != null) {  
    124. //                client.;   
    125.             }  
    126.         }  
    127.         return new byte[0];  
    128.     }