Created
September 19, 2020 18:18
-
-
Save 0x1bitcrack3r/c8e060a44e614fa2e4f7e4c9b25ac375 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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