Hello to all, I have read something about how to launch a Activity from BroadcastReceiver, hence now I am reached the point where I really cant not find the answer to... why is closing my application?.
I will explain the idea of the application: It consists of a main screen "main" that has only one ToggleButton, when it changes state to "On" begins my service, when go to "Off" does the same and stops it. This all works fine, I can close the application and service continue running smoothly. I can stop this service when I want, reopening the application and changing the button to "OFF". Now the service "MyService" is waiting any change of your phone, for each change It send a message like a Toast, it helps me to know and check if my service is active, it works perfectly except when you add the code lines to run an Activity that contains simply an image that is where the application is closed, if I leave only the Toast, it is going great, tells me that the phone are ringing and informs the incoming phone number. I create a class that receives the context and try to launch the Activity in question "NewScreen" Here I leave the application code, Any idea? It took me several days and I dont reach any breakthrough. Thanks for advance ---------------------------------------------------------------------------------------------------------------------- <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="xx.com.xxxxx.myservice" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="4" /> <uses-permission android:name="android.permission.VIBRATE"></uses- permission> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:label="@string/app_name" android:screenOrientation="portrait" android:name="Main"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:screenOrientation="portrait" android:name="NewScreen"> </activity> <service android:label="My Service" android:enabled="true" android:name="MyService"> </service> </application> </manifest> ---------------------------------------------------------------------------------------------------------------------- public class Main extends Activity{ ToggleButton buttonStatus; ActivityManager ActivityMan; List<RunningServiceInfo> RunningServices; boolean isMyServiceRunning = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ActivityMan = (ActivityManager) this.getSystemService (ACTIVITY_SERVICE); RunningServices = ActivityMan.getRunningServices(Integer.MAX_VALUE); buttonStatus = (ToggleButton) findViewById(R.id.buttonStatus); buttonStatus.setOnCheckedChangeListener(listener); checkServiceRuning(); showStatusService(); } OnCheckedChangeListener listener = new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { showStatusService(); MyService(isChecked); } }; public void checkServiceRuning(){ for (RunningServiceInfo runningServiceInfo : RunningServices) { if (runningServiceInfo.service.getClassName().equals(MyService.class.getName())) { isMyServiceRunning = true; buttonStatus.setChecked(true); } } } public void MyService(boolean status){ if (status) startService(new Intent(getApplicationContext(), MyService.class)); else stopService(new Intent(getApplicationContext(), MyService.class)); } public void showStatusService(){ if(buttonStatus.isChecked()) { Toast.makeText(Main.this, "Service ON", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(Main.this, "Service OFF", Toast.LENGTH_SHORT).show(); } } } ---------------------------------------------------------------------------------------------------------------------- public class MyService extends Service { BroadcastReceiver phoneStateChangeReceiver; Bundle extras; String phoneNumber; @Override public void onCreate() { phoneStateChangeReceiver = new PhoneStateChangeReceiver(); registerReceiver(phoneStateChangeReceiver, new IntentFilter(android.telephony.TelephonyManager.ACTION_PHONE_STATE_CHANGED)); } public void onDestroy() { unregisterReceiver(phoneStateChangeReceiver); } public class PhoneStateChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String newState = intent.getStringExtra("state"); Toast.makeText(getApplicationContext(), "Phone state: " + newState, Toast.LENGTH_SHORT).show(); if ( android.telephony.TelephonyManager.EXTRA_STATE_RINGING.equals(newState) ) { extras = intent.getExtras(); phoneNumber = extras.getString(TelephonyManager.EXTRA_INCOMING_NUMBER); Toast.makeText(getApplicationContext(), "Phone number: " + phoneNumber, Toast.LENGTH_SHORT).show(); showScreen(getApplicationContext()); } } } public void showScreen(Context context){ Intent NewScreen = new Intent(context, MyScreen.class); NewScreen.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); NewScreen.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); context.startActivity(NewScreen); } @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } } -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

