Skip to content

Instantly share code, notes, and snippets.

@0x1bitcrack3r
Created September 19, 2020 18:18
Show Gist options
  • Save 0x1bitcrack3r/c8e060a44e614fa2e4f7e4c9b25ac375 to your computer and use it in GitHub Desktop.
Save 0x1bitcrack3r/c8e060a44e614fa2e4f7e4c9b25ac375 to your computer and use it in GitHub Desktop.
public class IncomingCallScreenActivity extends ReactActivity {
private static final String TAG = "MessagingService";
private Ringtone ringtone;
LocalBroadcastManager mLocalBroadcastManager;
BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("com.incomingcallscreenactivity.action.close")){
finish();
}
}
};
@RequiresApi(api = Build.VERSION_CODES.P)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
IntentFilter mIntentFilter = new IntentFilter();
mIntentFilter.addAction("com.incomingcallscreenactivity.action.close");
mLocalBroadcastManager.registerReceiver(mBroadcastReceiver, mIntentFilter);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
setContentView(R.layout.activity_call_incoming);
Intent intent = getIntent();
String call_type=intent.getStringExtra("MESSAGE_TYPE");
String incomingCallDisconnect="calldisconnected";
String incomingCallStart="incomingcall";
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
String notifMessageType = sharedPref.getString("NOTIF_MESSAGE_TYPE", "incomingcall");
//ringtoneManager start
Uri incoming_call_notif = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
this.ringtone= RingtoneManager.getRingtone(getApplicationContext(), incoming_call_notif);
//ringtoneManager end
if(notifMessageType.equals(incomingCallStart)){
ringtone.setLooping(true);
ringtone.play();
}
else if(notifMessageType.equals(incomingCallDisconnect)){
finish();
}
String host_name = intent.getStringExtra("CALLER_NAME");
String incoming_call_type=intent.getStringExtra("CALL_TYPE");
Boolean isAppRuning=intent.getBooleanExtra("APP_STATE",false);
TextView tvName = (TextView)findViewById(R.id.callerName);
tvName.setText(host_name);
//
final ReactContext reactContext = getReactInstanceManager().getCurrentReactContext();
ImageButton acceptCallBtn = (ImageButton) findViewById(R.id.accept_call_btn);
acceptCallBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
WritableMap params = Arguments.createMap();
params.putBoolean("done", true);
params.putString("call_type",incoming_call_type);
if(isAppRuning){
Intent intent = new Intent(IncomingCallScreenActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.putExtra("CALL_TYPE",incoming_call_type);
finish();
startActivity(intent);
}
else{
sendEvent(reactContext, "accept", params);
finish();
}
}
});
ImageButton rejectCallBtn = (ImageButton) findViewById(R.id.reject_call_btn);
rejectCallBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
WritableMap params = Arguments.createMap();
params.putBoolean("done", true);
params.putString("call_type",incoming_call_type);
onDisconnected();
if(isAppRuning){
Intent intent = new Intent(IncomingCallScreenActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY );
intent.putExtra("CALL_TYPE",incoming_call_type);
finish();
startActivity(intent);
}
else{
sendEvent(reactContext, "reject", params);
finish();
}
}
});
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
finish();
}
}, 45000);
}
@Override
public void onDestroy() {
super.onDestroy();
mLocalBroadcastManager.unregisterReceiver(mBroadcastReceiver);
ringtone.stop();
}
private void onDisconnected() {
//do something
}
private void sendEvent(ReactContext reactContext, String eventName, WritableMap params) {
reactContext
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
.emit(eventName, params);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment