how to call an activity when getting incoming call.
android, android-input-method, android-intent, android-service
Solution
Actually the full code was i posted aboove just replace the the below code
public class TestReceiver extends BroadcastReceiver{
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(MyCallReceiver.CUSTOM_INTENT)) {
System.out.println("GOT THE INTENT");
context.startActivity(new Intent(context, CallActivity.class)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
}
}
with the below code
public class TestReceiver extends BroadcastReceiver{
@Override
public void onReceive(final Context context, Intent intent) {
if (intent.getAction().equals(MyCallReceiver.CUSTOM_TEST_INTENT)) {
System.out.println("GOT THE INTENT");
final String mobileNumber = intent.getExtras().getString("number");
Thread thread = new Thread(){
private int sleepTime = 400;
@Override
public void run() {
super.run();
try {
int wait_Time = 0;
while (wait_Time < sleepTime ) {
sleep(100);
wait_Time += 100;
}
}catch (Exception e) {
Toast.makeText(context,
"Error Occured Because:" + e.getMessage(),
Toast.LENGTH_SHORT).show();
}
finally {
}
context.startActivity(new Intent(context, CallActivity.class).putExtra("number", mobileNumber)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
};
thread.run();
}
}
}
Problem
Hi all i want to invoke a my own activity over the default incoming call activity.. i have done this with using broadcast receivers i am invoking my activity when getting incoming call. but it is working fine for first time from second time when i get incoming call then default incoming call activity is coming over my activity . i don't know what is the problem can any one please help me .. Manifest: ``` <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.satish.service" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <receiver android:name="MyCallReceiver" android:enabled="true" > <intent-filter android:priority="10"> <action android:name="android.intent.action.PHONE_STATE" > </action> </intent-filter> </receiver> <receiver android:name="TestReceiver" android:enabled="true" > <intent-filter android:priority="10"> <action android:name="jason.wei.custom.intent.action.TEST" > </action> </intent-filter> </receiver> <activity android:name="CallActivity" android:clearTaskOnLaunch="true" android:launchMode="singleTask" > <intent-filter android:priority="1000"></intent-filter> </activity> </application> </manifest> ``` Java Code: ``` public class MyCallReceiver extends BroadcastReceiver{ public static final String CUSTOM_INTENT = "jason.wei.custom.intent.action.TEST"; Context context = null; private static final String TAG = "Phone call"; public void onReceive(Context context, Intent intent) { Bundle extras = intent.getExtras(); if (extras != null) { String state = extras.getString(TelephonyManager.EXTRA_STATE); Log.w("DEBUG", state); if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { Intent i = new Intent(); i.setAction(CUSTOM_INTENT); context.sendBroadcast(i); } } } } public class TestReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(MyCallReceiver.CUSTOM_INTENT)) { System.out.println("GOT THE INTENT"); context.startActivity(new Intent(context, CallActivity.class) .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); } } } public class CallActivity extends Activity implements OnClickListener{ private ITelephony telephonyService; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setTheme(android.R.style.Theme_Dialog); ((Button)findViewById(R.id.call)).setOnClickListener(this); ((Button)findViewById(R.id.end)).setOnClickListener(this); TelephonyManager telephony = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); try { Class c = Class.forName(telephony.getClass().getName()); Method m = c.getDeclaredMethod("getITelephony"); m.setAccessible(true); telephonyService = (ITelephony) m.invoke(telephony); } catch (Exception e) { e.printStackTrace(); } } @Override public void onClick(View arg0) { switch (arg0.getId()) { case R.id.call: telephonyService.answerRingingCall(); break; case R.id.end: telephonyService.endCall(); finish(); break; default: break; } } } ```