ねえ、私は実際にこれについていくつかの洞察を使うことができました。さて、私は日食とアンドロイドの新機能です。ここに私が持っているものがあります。さて、私は、テキストメッセージを監視するために使用しているBroadcastReceiverを持っています。テキストメッセージが入ってくると、それはfromとmessageのボディを取得し、次にそれらをFilterMessage()メソッドに渡します。これは、メッセージ本文を使用してデータベースに対してクエリを実行します。SMSブロードキャスト受信機の問題
は、これまでのところ、それはコンパイルが、私はそれがBroadcastReceiverを(logcatに印刷されません)ここではトリガーされませんテキストを送信する際のコードです:ここ
public class SMSReceiver extends BroadcastReceiver {
SQLiteDatabase db;
private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
private static String messagefrom;
private static String messagebody;
final String dbTable = "Realtor_SMS_Table";
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null && intent.getAction() != null && ACTION.compareToIgnoreCase(intent.getAction()) == 0) {
Object[] pduArray = (Object[]) intent.getExtras().get("pdus");
SmsMessage[] messages = new SmsMessage[pduArray.length];
for (int i = 0; i < pduArray.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[])pduArray[i]);
messagefrom = messages[i].getOriginatingAddress();
messagebody = messages[i].getMessageBody();
Log.d("My SMSReceiver", "From: " + messagefrom);
Log.d("My SMSReceiver", "Msg: " + messagebody);
FilterMessage(dbTable, messagefrom, messagebody);
}
Log.d("My SMSReceiver", "SMSReceived");
}
}
public void FilterMessage(String dbTable, String messagefrom, String messagebody) {
DBHelper dbhelper = new DBHelper(null);
SQLiteDatabase db = dbhelper.getReadableDatabase();
Cursor cursor = db.query(dbTable, new String[] {"_id", "Description", "URL"},
"_id like " + "'%" + messagebody + "%'", null, null, null, null);
Log.d("My SMSReceiver", "sql= " +cursor);
if (cursor != null) {
cursor.moveToFirst();
String messageAddress = null;
String messageDescription = null;
String messageURL = null;
while (cursor.isAfterLast() == false){
messageAddress = cursor.getString(0);
messageDescription = cursor.getString(1);
messageURL = cursor.getString(2);
}
SmsManager sm = SmsManager.getDefault();
sm.sendTextMessage(messagefrom, null, messageAddress + messageDescription, null, null);
sm.sendTextMessage(messagefrom, null, messageAddress + messageURL, null, null);
}
}
}
のAndroidManifest.xml
です<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.RealtorSMS" android:versionCode="1" android:versionName="1.0">
<uses-sdk android:minSdkVersion="3" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".ActivationActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".SMSReceiver">
<intent-filter>
<action android:name="android.provider.telephony.SMS_RECEIVED"></action>
</intent-filter>
</receiver>
<activity android:name=".PreferencesAcitvity" />
<activity android:name=".ViewListingsActivity" />
</application>
</manifest>