0

我想在我的应用程序上接收短信,但是当我尝试接收新短信时,我的应用程序没有收到新短信。我找不到我做错的地方。我不确定代码或调试是否有问题。

如果有新短信到达并将短信保存在我的数据库中,我会尝试收到通知。

这是我的接收器。

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);

我的安卓清单

更新

<?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>

有人可以帮助我吗?我真的需要解决方案。谢谢..

4

1 回答 1

2

而不是p使用pdus

Object[] p = (Object[]) b.get("pdus");
于 2013-05-10T20:26:55.483 回答