MainActivity Java
MainActivity Java
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link].R;
import [Link];
import [Link];
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
[Link](this).initChannels();
setContentView([Link].activity_main);
coordinatorLayout = (CoordinatorLayout)
findViewById([Link]);
toolbar = (Toolbar) findViewById([Link]);
setSupportActionBar(toolbar);
startUpdatingReceiverStatusAsync();
//region show help overlay on first start
if ([Link]().isFirstStart())
showHelpOverlay = true;
if (getIntent().getBooleanExtra("showHelpOverlay", false)) {
showHelpOverlay = true;
getIntent().removeExtra("showHelpOverlay");
}
if (showHelpOverlay) {
helpInfoTitleTextView = (TextView)
findViewById([Link].textView_help_info_title);
helpInfoDescTextView = (TextView)
findViewById([Link].textView_help_info_content);
helpNextButton = (Button) findViewById([Link].button_help_next);
helpOverlayView = findViewById([Link].layout_help_overlay);
[Link]([Link]);
[Link](new OnSwipeTouchListener(this)
{
@Override
public void onSwipeLeft() {
if (helpViewPos < [Link]() - 1)
showNextHelpView();
}
@Override
public void onSwipeRight() {
showPreviousHelpView();
}
});
findViewById([Link].layout_help_info).setVisibility([Link]);
helpOverlay = [Link]();
showNextHelpView();
[Link](new [Link]() {
@Override
public void onClick(View view) {
showNextHelpView();
}
});
findViewById([Link].button_help_abort).setOnClickListener(new
[Link]() {
@Override
public void onClick(View view) {
recreate();
}
});
} else {
findViewById([Link].layout_help_overlay).setVisibility([Link]);
}
//endregion
}
@Override
public void onBackPressed() {
if(showHelpOverlay)
recreate();
else
[Link]();
}
/**
* goto next step of help overlay
*/
private void showNextHelpView() {
helpViewPos++;
[Link] helpView = [Link](helpViewPos);
if (helpView == null) {
//goto how to control
showHelpOverlay = false;
[Link]([Link]);
startActivity(new Intent(this, [Link]));
return;
}
updateHelpView(helpView);
if (helpViewPos > 0) {
[Link] previousHelpView =
[Link](helpViewPos - 1);
if ([Link]() >= 0)
findViewById([Link]())
.setVisibility([Link]);
}
}
/**
* goto previous step of help overlay
*/
private void showPreviousHelpView() {
if (helpViewPos - 1 < 0)
return;
helpViewPos--;
[Link] helpView = [Link](helpViewPos);
updateHelpView(helpView);
[Link] previousHelpView = [Link](helpViewPos +
1);
if (previousHelpView != null &&
[Link]() >= 0)
findViewById([Link]())
.setVisibility([Link]);
}
/**
* update visible information of help overlay
*
* @param helpView current help view
*/
private void updateHelpView([Link] helpView) {
[Link]([Link]());
[Link]([Link]());
if ([Link]() >= 0)
findViewById([Link]()).setVisibility([Link]);
if (helpViewPos == 0) {
//first
[Link]([Link].help_take_a_tour);
} else {
if (helpViewPos == [Link]() - 1) {
//last help view
[Link]([Link].help_how_to_control_title);
} else
[Link]([Link].help_next);
if ([Link]() == [Link].help_other_title) {
[Link]();
} else {
[Link]();
}
}
}
/**
* start updating receiver status in background until activity finishes
*/
private void startUpdatingReceiverStatusAsync() {
receiverStatusUpdateThread = new Thread(new Runnable() {
@Override
public void run() {
try {
while (![Link]()) {
runOnUiThread(new Runnable() {
@Override
public void run() {
updateReceiverStatus();
}
});
[Link](2000);
}
} catch (InterruptedException e) {
}
}
});
[Link]();
}
/**
* Update all views, which show information about the receiver's status
*/
private void updateReceiverStatus() {
if ([Link](this)) {
[Link]([Link].ic_stop_white_24dp);
[Link](getResources().getColor([Link]
ccess));
[Link](getResources().getString(
[Link].receiver_life_info_running, elapsedTimeStr));
} else {
[Link]([Link].ic_play_arrow_white_24dp);
[Link](getResources().getColor([Link]
ror));
[Link]([Link].receiver_life_info_not_running);
}
}
UserSettings userSettings =
[Link]().getUserData().getUserSettings();
[Link](getBaseContext(),
[Link]());
updateReceiverStatus();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is
present.
getMenuInflater().inflate([Link].menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (showHelpOverlay)
return false;
switch ([Link]()) {
case [Link].action_settings:
startActivity(new Intent(this, [Link]));
return true;
case [Link].action_log:
startActivity(new Intent(this, [Link]));
return true;
case [Link].action_help_tour:
Intent intent = new Intent(this, [Link]());
[Link]("showHelpOverlay", true);
[Link](Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
overridePendingTransition(0, 0);
break;
case [Link].action_help_how_to_control:
startActivity(new Intent(this,
[Link]));
break;
}
return [Link](item);
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long
l) {
Module module = [Link](i);
if (module == null)
return;
@Override
protected void onPostResume() {
[Link]();
[Link]();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[]
permissions, @NonNull int[] grantResults) {
if (requestCode == CODE_PERM_REQUEST_SMS) {
boolean permissionGranted = [Link] > 0 &&
grantResults[0] == PackageManager.PERMISSION_GRANTED;
if (permissionGranted) {
if (startReceiverAfterPermRequest) {
startSMSReceiverService();
startReceiverAfterPermRequest = false;
}
} else {
[Link](coordinatorLayout,
[Link].permission_receive_sms_not_granted,
Snackbar.LENGTH_INDEFINITE)
.setAction([Link].simple_request_again, new
[Link]() {
@Override
public void onClick(View view) {
[Link]([Link],
new String[]{
[Link].RECEIVE_SMS,
[Link].SEND_SMS
},
CODE_PERM_REQUEST_SMS);
}
})
.show();
}
}
[Link](requestCode, permissions,
grantResults);
}
@Override
public void onClick(View view) {
if ([Link]() == [Link].fab_receiver_change_state) {
if ([Link](this))
stopSMSReceiverService();
else
startSMSReceiverService();
}
}
}
Explanation:
The provided code is an Android application's `MainActivity` class that represents the main screen of the
app. Here's an overview of what the code does:
1. The code sets up the layout and initializes various UI elements such as the toolbar, list view, floating
action button, and help overlay views.
2. It loads user data using `AppDataManager` and handles any exceptions that may occur during the
data loading process.
3. The code sets up the list view with a custom adapter (`ManageControlModulesListAdapter`) and
registers a click listener for each item in the list.
5. The code handles the creation of the options menu and defines the actions to be performed when
menu items are selected.
6. There are methods to start and stop the SMSReceiverService, which handles receiving and processing
SMS messages.
9. The `onCreate` method sets up the layout, initializes UI elements, loads user data, sets up the list
view, starts the receiver status update thread, and manages the help overlay.
Note: The code assumes the presence of other classes (`SmsServiceListener`, `MyMessage`, `Instances`,
`Module`, etc.) and resources (layout files, strings, drawables) that are not included in the provided code
snippet.