ورود

View Full Version : مشکل در SMS Reciver



emperatorsoftware
سه شنبه 20 مرداد 1394, 23:38 عصر
سلام دوستان
من یه برنامه نوشتم که به یه سری شماره حساس باشه وقتی از اونا اس ام اس میاد نوتیفیکشن بده و بوق بزنه

حالا اینم کدی که نوشتم اما روی دستگاه اندرویدی که اجرا میکنم خبری از نوتیفیکشن نیست و برنامه رو از Splash اجرا میکنه نه از INboxSMSactivity که توو کد نوشتم

ممنون میشم کمکم کنید بدجور گیر کردم:گریه:



public class SMSReceiver extends BroadcastReceiver {

DBAdapter s_db;
List<SensorsmsProvider> s_etes;
SensorsmsProvider s_ete;
public static int SIMPLE_NOTIFICATION_ID = 0;
String MText;

@Override
public void onReceive(Context context, Intent intent) {

if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
Bundle extras = intent.getExtras();
if (extras != null) {
Object[] pdus = (Object[])extras.get("pdus");

if (pdus.length < 1)
return; // Invalid SMS. Not sure that it's possible.

StringBuilder sb = new StringBuilder();
String sender = null;
for (int i = 0; i < pdus.length; i++) {
SmsMessage message = SmsMessage.createFromPdu((byte[]) pdus[i]);
if (sender == null) sender = message.getOriginatingAddress();
String text = message.getMessageBody();
long buf = message.getTimestampMillis();

Toast.makeText(context, buf + "", Toast.LENGTH_LONG).show();
MText = text;
if (text != null) sb.append(text);
}
s_db = new DBAdapter(context);
s_db.open();
s_etes = s_db.getContactFromSensorsmsByActiveOrNot(1);
for(int i = 0 ; i < s_etes.size() ; i++ ){
s_ete = s_etes.get(i);
if (sender != null && sender.equals("+98" + s_ete.getNumber())) {
// Process our sms...
Toast.makeText(context, "SMS ", Toast.LENGTH_LONG).show();

int icon = R.drawable.ic_launcher;
CharSequence tickerText = sender + "D";
long when = System.currentTimeMillis();
CharSequence contentTitle = sender + "";
CharSequence contentText = MText;
NotificationManager mNotificationManager=
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERV ICE);
Intent notificationIntent = new Intent(context, InboxSMSActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
Notification notifyDetails = new Notification(icon, tickerText , when);
mNotificationManager.notify(SIMPLE_NOTIFICATION_ID , notifyDetails);
if(s_ete.getAlarm() == 1){
final MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.light_switch_on);
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new OnCompletionListener() {

@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
mediaPlayer.release();
}
});
}
if(s_ete.getAbort() == 1){
abortBroadcast();
}
}
}

return;
}
}

// ...
}




و اینم مانیفسست برنامه



<receiver android:name=".SMSReceiver" >
<intent-filter android:priority="2300" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>

emperatorsoftware
چهارشنبه 21 مرداد 1394, 11:18 صبح
دوستان خواهش میکنم راهنمایی کنید بدجور لنگ این موضوع هستم

nasr
چهارشنبه 21 مرداد 1394, 16:09 عصر
سلام
من با این کد پیام را دریافت می کنم
ولی نمی دونم حالا این پیام که دریافت شده کجا میره که بهش دسترسی پدا کنم
فکر کنم مشکل شما را حل کنه
public class IncomingSms extends BroadcastReceiver {

// Get the object of SmsManager
final SmsManager sms = SmsManager.getDefault();

public void onReceive(Context context, Intent intent) {

// Retrieves a map of extended data from the intent.
final Bundle bundle = intent.getExtras();

try {

if (bundle != null) {

final Object[] pdusObj = (Object[]) bundle.get("pdus");

for (int i = 0; i < pdusObj.length; i++) {

SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
String phoneNumber = currentMessage.getDisplayOriginatingAddress();

String senderNum = phoneNumber;
String message = currentMessage.getDisplayMessageBody();

Log.i("SmsReceiver", "senderNum: "+ senderNum + "; message: " + message);


// Show Alert
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context,
"senderNum: "+ senderNum + ", message: " + message, duration);
toast.show();

} // end for loop
} // bundle is null

} catch (Exception e) {
Log.e("SmsReceiver", "Exception smsReceiver" +e);

}
}
}




<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.androidexample.broadcastreceiver"
android:versionCode="1"
android:versionName="1.0" >

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.androidexample.broadcastreceiver.BroadcastNewS ms"
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="com.androidexample.broadcastreceiver.IncomingSms">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>

</application>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />

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

</manifest>

hamedg1366
چهارشنبه 21 مرداد 1394, 22:38 عصر
دوست عزیز از اندروید 4.4 به بالا (KitKat) شما نمیتونین اس رو دریافت کنین مگر اینکه برنامه شما بعنوان برنامه پیش فرض دریافت اس انتخاب بشه توسط کاربر.

nasr
پنج شنبه 22 مرداد 1394, 07:38 صبح
دوست عزیز از اندروید 4.4 به بالا (KitKat) شما نمیتونین اس رو دریافت کنین مگر اینکه برنامه شما بعنوان برنامه پیش فرض دریافت اس انتخاب بشه توسط کاربر.
الان پس چطور همراه بانکها (مثلا همراه بانک ملت ) با پیامک کار می کنن