PDA

View Full Version : گوش دادن به پیامک های ارسال شده کاربر



mortex3000
چهارشنبه 04 اسفند 1395, 17:17 عصر
سلام من میخوام کاربر که یه پیامک ارسال کرد بتونم توسط یه لیسنر یا ... به محتویات اون دسترسی داشته باشم، برای پیامکهای ورودی یا همون incoming sms مشکلی وجود نداره و با یه broadcast receiver میشه اینکارو کرد اما برای پیامکهای ارسالی چه راهی وجود داره؟ و هنوز راه حل کاملی برای این موضوع پیدا نکردم

JYasProgramer
پنج شنبه 05 اسفند 1395, 09:21 صبح
سلام پیامک های ورودی با ارسالی چه تفاوتی دارن؟
منظور سوال رو متوجه نشدم

mortex3000
پنج شنبه 05 اسفند 1395, 11:09 صبح
سلام پیامک های ورودی با ارسالی چه تفاوتی دارن؟
منظور سوال رو متوجه نشدم
منظور از پیامکهای ورودی وقتی که به گوشی کاربر پیامک زده میشه و منظور از ارسالی هم وقتی که کاربر یک پیامک ارسال میکنه. میخوام کاربر وقتی یک پیامک ارسال کرد اونرو بگیرم و یکجایی ذخیره کنم

JYasProgramer
پنج شنبه 05 اسفند 1395, 22:12 عصر
پیام که ارسال کرد مسلما یک در یه ادیت تکست تایپ میکنه، وقتی سند رو زد متن رو بگیر با getText().toString(); در استرینگ ذخیره کن بریز در دیتابیس

spiderman200700
شنبه 07 اسفند 1395, 11:08 صبح
سلام.
میتونی از content observer استفاده کنی. مثل این:

ContentResolver contentResolver = context.getContentResolver();
contentResolver.registerContentObserver(Uri.parse("content://sms/out"),true, yourObserver);


کلاس observer شما باید از کلاس ContentObserver مشتق بشه. مثل این:


class YourObserver extends ContentObserver {

public YourObserver(Handler handler) {
super(handler);
}

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


حالا در متد onChange باید به شکل زیر sms رو بخونی:


Uri uriSMSURI = Uri.parse("content://sms/out");
Cursor cur = this.getContentResolver().query(uriSMSURI, null, null, null, null);
cur.moveToNext();
String content = cur.getString(cur.getColumnIndex("body"));

mortex3000
شنبه 07 اسفند 1395, 11:44 صبح
سلام.
میتونی از content observer استفاده کنی. مثل این:

ContentResolver contentResolver = context.getContentResolver();
contentResolver.registerContentObserver(Uri.parse("content://sms/out"),true, yourObserver);


کلاس observer شما باید از کلاس ContentObserver مشتق بشه. مثل این:


class YourObserver extends ContentObserver {

public YourObserver(Handler handler) {
super(handler);
}

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


حالا در متد onChange باید به شکل زیر sms رو بخونی:


Uri uriSMSURI = Uri.parse("content://sms/out");
Cursor cur = this.getContentResolver().query(uriSMSURI, null, null, null, null);
cur.moveToNext();
String content = cur.getString(cur.getColumnIndex("body"));



دو خط اولی رو که گفتین
content observer باید در کجای برنامه قرار داد؟

spiderman200700
شنبه 07 اسفند 1395, 11:54 صبح
در اکتیویتی یا هر جایی که به اکتیویتی دسترسی داشته باشی.

mortex3000
یک شنبه 08 اسفند 1395, 11:25 صبح
در اکتیویتی یا هر جایی که به اکتیویتی دسترسی داشته باشی.
خُب من نمیخوام تو برنامه صدا بزنم من میخوام مانند broadcast receiver که برای پیامک های ورودی نوشتم ، از این استفاده کنم و هر وقت کاربر در خارج برنامه یک پیامک ارسال کرد بشه به اونها دسترسی داشت

spiderman200700
یک شنبه 08 اسفند 1395, 13:13 عصر
ببین دوست من.
هیچ پیامی موقع ارسال sms برودکست نمیشه و شما مجبوری از این روش استفاده کنی. اینم شبیه broadcast receiver عمل میکنه. یعنی وقتی یه پیامی ارسال میشه توی متد onChange بهت خبر میده که ارسال شد. بعدش توی همون متد onChange باید آخرین پیام ارسال شده رو بخونی که کد این کار رو هم گذاشتم.

mortex3000
دوشنبه 09 اسفند 1395, 18:31 عصر
ببین دوست من.
هیچ پیامی موقع ارسال sms برودکست نمیشه و شما مجبوری از این روش استفاده کنی. اینم شبیه broadcast receiver عمل میکنه. یعنی وقتی یه پیامی ارسال میشه توی متد onChange بهت خبر میده که ارسال شد. بعدش توی همون متد onChange باید آخرین پیام ارسال شده رو بخونی که کد این کار رو هم گذاشتم.
من منظورم ین بود که برای اینکه در خارج از برنامه بتونیم هنگام ارسال پیامک به اون دسترسی داشته باشیم چطور باید از کدهای شما استفاده کنیم. آیا باید یک سرویس تعریف کنیم و اون دو خط اول کدها رو توش بذاریم و در اکتیویتی صدا بزنیم یا اینکه جور دیگه باید استفاده کرد؟ لطفا بصورت کاملتر کدها رو بذارین ممنون

spiderman200700
سه شنبه 10 اسفند 1395, 17:15 عصر
بله دیگه. اگه بخوای تا وقتی اکتیویتی در حال نمایشه به sms ها گوش بدی، باید توی اکتیویتی بزاریش ولی اگه میخوای با بسته شدن تمام اکتیویتی ها بازم به sms ها گوش بدی باید یه سرویس تعریف کنی و اون کد ها رو توی کلاس سرویس قرار بدی.

mortex3000
چهارشنبه 11 اسفند 1395, 08:31 صبح
در دو خط زیر از کلاس yourObserver خطا میگیره با اینکه کلاسشو نوشتم


ContentResolver contentResolver = context.getContentResolver();
contentResolver.registerContentObserver(Uri.parse( "content://sms/out"),true, yourObserver);

spiderman200700
چهارشنبه 11 اسفند 1395, 18:02 عصر
چه خطایی میگیره و کلاسشو چطور نوشتی؟