簡訊的接收和傳送,有broadcast傳送出來。
而對於彩信,接收時有broadcast,但是傳送時卻沒有。
並且對於彩信,也沒有合適的uri可以實現對資料庫的監聽。
大概看了下彩信mms的傳送流程,發現可以通過監聽android.net.conn.connectivity_change這個廣播來監聽彩信的傳送。
下面是流程分析
傳送彩信最終會呼叫com.android.mms.transactiontransactionservice的processtransaction()
在這裡函式裡面會將手機的連線型別設定為connectivitymanager.type_mobile_mms
在beginmmsconnectivity()中開始設定手機連線型別:
所以根據上面的分析,可以通過監聽這個廣播來達到監聽傳送彩信的目的,**如下:
package com.test.emm401;
import android.content.broadcastreceiver;
import android.content.context;
import android.content.intent;
import android.net.connectivitymanager;
import android.net.networkinfo;
import android.os.build;
import android.os.handler;
import android.os.looper;
import android.widget.toast;
public class connectivitychangereceiver extends broadcastreceiver
};private static void onmmssend()
@override
public void onreceive(context context, intent intent)
private static void handlemmssendintent(intent intent, context context)
shanler.removecallbacks(shandlemmstask);
shanler.postdelayed(shandlemmstask, delay_time);
}/**
* the absence of a connection type.
*/private static final int type_none = -1;
/*** get the network type of the connectivity change
** @param intent the broadcast intent of connectivity change
* @return the change's network type
*/private static int getconnectivitychangenetworktype(final intent intent) else
}return type_none;}}
androidmanifest.xml:
Android傳送彩信
傳送音訊 param file 音訊檔案 private void mms audio file file 下面的各種方法均是通過android自帶的intent進行採集的傳送的,見 傳送彩信 param file 檔案位址 param body private void sendmms image...
Android 未接來電及未讀短彩信的監聽實現
public class phoneconstants public void oncallstatechanged int state,string incomingnumber 最後改變當前值 lastetstate state private void sendsmgwhe sedcall s...
apiCloud事件傳送與監聽
1.sendevent 將任意乙個自定義事件廣播出去,該事件可在任意頁面通過 addeventlistener 監聽收到。sendevent 2.addeventlistener 監聽事件,支援系統事件和自定義事件。addeventlistener callback ret,err 3.remove...