Saturday, April 20, 2013

[android help] Pop up window over android native incoming call screen like true caller android app


I am developing an broadcast receiver for in coming calls in android and on getting incoming calls I want to inflate an pop up over native incoming call screen.


I have made that code completed. But now problem is that in android jelly bean api level 17 when a phone rings the PHONE_STATE is coming as OFF HOOK and If I am calling an activity, it get called but the code under it doesn't get executed I am giving you the code.


My broadcast reciver



package com.example.popwindowonincomingcallscreen;

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;
import android.util.Log;

public class IncomingBroadcastReceiver extends BroadcastReceiver {

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

Log.d("IncomingBroadcastReceiver: onReceive: ", "flag1");

String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
Log.d("IncomingBroadcastReceiver: onReceive: ", state);
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)
|| state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {

Log.d("Ringing", "Phone is ringing");

Intent i = new Intent(context, IncomingCallActivity.class);
i.putExtras(intent);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
Wait.oneSec();
context.startActivity(i);

}

}

}


An the activity which I am calling



import android.app.Activity;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.View.MeasureSpec;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;

public class IncomingCallActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {

try {
Log.d("IncomingCallActivity: onCreate: ", "flag2");

*/After this line code is not executed in jelly bean only/*

// TODO Auto-generated method stub
super.onCreate(savedInstanceState);

getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);

Log.d("IncomingCallActivity: onCreate: ", "flagy");

setContentView(R.layout.main);

Log.d("IncomingCallActivity: onCreate: ", "flagz");

String number = getIntent().getStringExtra(
TelephonyManager.EXTRA_INCOMING_NUMBER);
TextView text = (TextView) findViewById(R.id.text);
text.setText("Incoming call from " + number);
} catch (Exception e) {
Log.d("Exception", e.toString());
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}


After



try {
Log.d("IncomingCallActivity: onCreate: ", "flag2");
}


The code is not executing in jelly bean but in other version it is working.


I have tried almost all ways I can do. This code is displaying an translucent activity over native call screen and it doesn't block background controls like picking up the phone. But I want it like true caller. I have attached an snapshot how true caller is displaying an window on incoming call screen.


Please guide me through the way How can I achieve this functionality for android app.


This is how true caller works


enter image description here



.

stackoverflow.comm

No comments:

Post a Comment

Google Voice on T-Mobile? [General]

Google Voice on T-Mobile? So I recently switched from a GNex on Verizon to a Moto X DE on T-Mobile. I had always used Google Voice for my v...