2011-08-10 13 views
1

着信MESSAGEタイプを、テキストやMMSなど、Androidプログラムの同盟国に取り込む方法を教えてください。SMSタイプのTEXTまたはMMSなど?

+0

ここでは良いチュートリアルを読む:http://www.anddev.org/recognize-react_on_incoming_sms-t295.html –

答えて

0

私は解決のためにここに来たが、得られなかった。 今私はそれを解決し、自分自身で回答を投稿することに決めました。

メッセージタイプがテキストかMMSかを知りたい場合は?

我々は


public class ListenSMSService extends Service{ 
//Context globalContext; 
ContentResolver contentResolver; 

@Override 
public IBinder onBind(Intent intent) { 
    // TODO Auto-generated method stub  
    return null; 
} 

@Override 
public void onCreate() { 

    registerObserver(); 
} 

public void registerObserver() {     

contentResolver = getContentResolver();      
contentResolver.registerContentObserver(Uri.parse 
      ("content://mms-sms/conversations/"), true, 
      new MyObserver(new Handler()));    
Log.v("Debug", " in registerObserver method........."); 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    return START_STICKY;   
} 

class MyObserver extends ContentObserver 
{ 
    public MyObserver(Handler handler) { 
     super(handler); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onChange(boolean selfChange) { 
    super.onChange(selfChange); 

    Log.v("Current Locaion", "in onChange method...."); 

    final String[] projection = new String[]{"_id", "ct_t"}; 
    Uri uri = Uri.parse("content://mms-sms/conversations/"); 
    Cursor query = contentResolver.query(uri, projection, null, null, null); 
    query.moveToFirst(); 

    String string = query.getString(query.getColumnIndex("ct_t")); 
     if ("application/vnd.wap.multipart.related".equals(string)) 
      { 
      // it's MMS    
      Log.v("Debug", "it's MMS"); 
     } 
      else 
      { 
      // it's SMS 
      Log.v("Debug", "it's SMS");    

     } 
    }   

} 

}

コンテンツオブザーバーを使用するサービスを作成するサービス


public class ListenSMSActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    //start the service to listen 
    startService(new Intent(getBaseContext(),ListenSMSService.class)); 

}} 

を開始しますアクティビティを作成


、最終的には、権限を追加し、Logcatのメッセージタイプ(SMS/MMS)を取得します


<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.rdc" 
    android:versionCode="1" 
    android:versionName="1.0"> 
<uses-sdk android:minSdkVersion="8" />  

<uses-permission android:name="android.permission.SEND_SMS"></uses-permission> 
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> 
<uses-permission android:name="android.permission.READ_SMS"></uses-permission> 

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
<activity android:name="com.rdc.ListenSMSActivity" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity>  


<service android:enabled="true" android:name="com.rdc.ListenSMSService"> 
    <intent-filter> 
     <action android:name="com.kns.ListenSMSService"> 
     </action> 
    </intent-filter> 


</service>  
</application>    
</manifest> 

マニフェストファイルにサービスのエントリを作成します。

関連する問題