PDA

View Full Version : مشکل در broadcastReciver



A.iman
چهارشنبه 26 شهریور 1393, 20:05 عصر
سلام
من میخاستم یه اپ ساده بنویویسم که وقتی گوشی داره زنگ میخوره یه Toast نشون بده .
برای اینکار از کلاس زیر استفاده کردم و فایل manifest.xml رو هم گزاشتم ولی اصلا کار نمیکنه:گریه: ! چون روی گوشی واقعی کار میکنم امکان لاگ گیری هم برام وجود نداره ! ممنون میشم کمکم کنید
public class callReciver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE );
String msg = "Phone state changed to " + state;


if (state.equals(TelephonyManager.EXTRA_STATE_RINGING )) {
String incomingNumber = intent
.getStringExtra(TelephonyManager.EXTRA_INCOMING_NU MBER);
msg += ". Incoming number is " + incomingNumber;


Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
// TODO This would be a good place to
// "Do something when the phone rings" ;-)
}


}
}




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


<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>


<application android:allowBackup="true" >
<receiver android:name="callReciver" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
</application>


</manifest>

A.iman
چهارشنبه 26 شهریور 1393, 20:47 عصر
مشکل حل شد !
گویا برای نسخه 4.x به بعد اندروید یک فیلد جدید امنیتی به ICS اضافه شده که میگه باید تمامی اپ هایی که از boradcastreceiver استفاده میکنن باید یه فایل lunch داشته باشن و حداقل یه بار توسط کاربر اجرا بشن و بعد از آن اون broadCastReceiver کار خواهد کرد .

keyhan.taktaz
چهارشنبه 26 شهریور 1393, 23:19 عصر
روی گوشی واقعی مگه نمیشه لاگ گیری کردد؟:متعجب:

saeed_g21
چهارشنبه 26 شهریور 1393, 23:41 عصر
روی گوشی واقعی مگه نمیشه لاگ گیری کردد؟:متعجب:
100% میشه
چرا نمیشه

A.iman
پنج شنبه 27 شهریور 1393, 07:14 صبح
روی گوشی واقعی مگه نمیشه لاگ گیری کردد؟:متعجب:
مطمئنا میشه ولی من اینکارو نکردم ...

m11111
چهارشنبه 02 مهر 1393, 12:17 عصر
سلام این فایل lunch چی هست
میشه منم راهنمایی کنید منم همچین مشکلی دارم اگه میشه مراحل را کامل بگید از کد های خود BroadcastReceiver تا Activity اصلی برنامه
بعد فقط کافیه برنامه اجرا بشه و یا باید اون کلاسی که BroadcastReceiver هست هم یک بار توسط Activity اصلی اجرا بشه؟
ممنون

abbasalim
چهارشنبه 02 مهر 1393, 12:50 عصر
سلام یه چیز بی ربط داخل منیفست "callReciver" اشتباه نیست ؟ نباید . اولش باشه؟ یا نام پکیج کامل باشه:متفکر:

saeed_g21
چهارشنبه 02 مهر 1393, 13:05 عصر
سلام یه چیز بی ربط داخل منیفست "callReciver" اشتباه نیست ؟ نباید . اولش باشه؟ یا نام پکیج کامل باشه:متفکر:
اگه در پکیچ نیم اصلی باشه نه فرقی نمیکنه ولی اگه داخل فولدری قرار بگیره نوشتن اسم و فایل کفیات میکنه
مثال :
com.android.example

میشه با فرض اینکه نام فایل جاوا داخل این پکیچ "saeed.java" هست در مانیفیست نوشت :
saeed

com.android.example.test

میشه با فرض اینکه نام فایل جاوا داخل این پکیچ "saeed.java" هست در مانیفیست نوشت :
.test.saeed

A.iman
جمعه 04 مهر 1393, 17:14 عصر
سلام این فایل lunch چی هست
میشه منم راهنمایی کنید منم همچین مشکلی دارم اگه میشه مراحل را کامل بگید از کد های خود BroadcastReceiver تا Activity اصلی برنامه
بعد فقط کافیه برنامه اجرا بشه و یا باید اون کلاسی که BroadcastReceiver هست هم یک بار توسط Activity اصلی اجرا بشه؟
ممنون
ببین خیلی ساده ! وقتی یه پروژه میسازی ، یه کلاس BroadcastReciever بهش اضافه کن و تو فایل manifest هم اینو اعمال کن ، یعنی در نهایت تو یه اکتیویتی داری که واسه لانچ برنامه ات هست و یه برودکست داری که واسه گوش دادن به رویداد های مورد نظرت . تو همون دو فایل رو یه یه پروژه ساده اضافه کنی و یه بار اپ رو داخل گوشی باز کنی دیگه از دفعه بعد برودکستت کار میکنه ....
حل شد ؟

m11111
سه شنبه 08 مهر 1393, 00:06 صبح
ممنون بابت راهنماییت
راستی در مورد این دستور زیر که واسه گرفتن موقعیت با gps هستش اطلاعاتی دارید؟
locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 5000, 0, locationListener);
عدد 5000 هزاری که هست و عدد 0 و میدونم چیه اما نمیدونم بهترین عددی که میشه گذاشت چنده!!