我想在我的應用程序上接收短信,但是當我嘗試獲取新的短信時,我的應用程序沒有得到新的短信。我無法找到我在做錯的地方。我不確定代碼是否有問題,或調試。我的短信接收器不能接受新的短信
我想通知,如果一個新的短信到達,並保存在我的數據庫的短信。
這是我的接收器。
public void onReceive(Context c, Intent i) {
Bundle b = i.getExtras();
SmsMessage[] m = null;
String s = "";
TelephonyManager teleponyManager = (TelephonyManager) c.getSystemService(Context.TELEPHONY_SERVICE);
int x;
if (b != null) { //IF valid SMS
Object[] p = (Object[]) b.get("p");
m = new SmsMessage[p.length];
for (x = 0; x < m.length; x++) { //FOR ambil konten SMS
m[x] = SmsMessage.createFromPdu((byte[])p[x]);
s += "SMS dari " +m[x].getOriginatingAddress().toString().trim();
s += " :";
s += m[x].getMessageBody().toString();
s += "\n";
}
Toast.makeText(c, s, Toast.LENGTH_LONG).show();
nomor = m[x].getOriginatingAddress().toString().trim();
pesan = m[x].getMessageBody().toString();
Cursor cursorKontak = data.pilihKontak(nomor);
if(cursorKontak.moveToFirst()) {
idkontak = cursorKontak.getString(cursorKontak.getColumnIndex("idkontak"));
}
if(idkontak == null) {
nama = nomor;
data.inputKontak(nama, nomor);
Cursor cursorKontak2 = data.pilihKontak(nomor);
if(cursorKontak2.moveToFirst()) {
idkontak = cursorKontak2.getString(cursorKontak2.getColumnIndex("idkontak"));
}
data.inputPesanMasuk(idkontak, pesan);
}else {
data.inputPesanMasuk(idkontak, pesan);
}
Intent broadcastIntent = new Intent();
broadcastIntent.setAction("SMS_RECEIVED_ACTION");
broadcastIntent.putExtra("sms", s);
c.sendBroadcast(broadcastIntent);
我的Android清單
更新
<?xml version="1.0" encoding="UTF-8"?>
<manifest android:versionCode="1" android:versionName="1.0"
package="com.sms" xmlns:android="http://schemas.android.com/apk/res/android">
<uses-sdk android:minSdkVersion="10"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name">
<activity android:label="@string/app_name"
android:name="EnkripsiSMS" android:screenOrientation="portrait">
<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"/>
</intent-filter>
</receiver>
<activity android:name=".KotakMasuk"/>
<activity android:name=".TulisPesan"/>
<activity android:name=".KotakKeluar"/>
<activity android:name=".HasilEnkripsi"/>
<activity android:name=".KirimPesan"/>
<activity android:name=".IsiPesanKeluar"/>
<activity android:name=".DekripsiPesanKeluar"/>
<activity android:name=".HasilDekripsiPesanKeluar"/>
<activity android:name=".TeruskanPesanKeluar"/>
<activity android:name=".KirimPesanKeluar"/>
<activity android:name=".IsiPesanMasuk"/>
<activity android:name=".DekripsiPesanMasuk"/>
<activity android:name=".TeruskanPesanMasuk"/>
<activity android:name=".HasilDekripsiPesanMasuk"/>
<activity android:name=".Balas"/>
<activity android:name=".HasilBalas"/>
<activity android:name=".KirimPesanMasuk"/>
</application>
</manifest>
有人能幫助我嗎? 我真的需要解決方案。 感謝..
貴的onReceive方法被調用? – stinepike 2013-05-10 03:59:13
我該如何調用該方法?你能告訴我該怎麼做嗎? – androidDev 2013-05-10 04:03:27
@androidDev註冊接收器在你的清單....隨着短信自動接收器的OnRecieve將被自動調用 – user1969053 2013-05-10 04:04:45