Files
OpenTracks/src/main/java/de/dennisguse/opentracks/ShowErrorActivity.java
T
2022-05-19 06:12:58 +02:00

89 lines
2.8 KiB
Java

package de.dennisguse.opentracks;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import de.dennisguse.opentracks.databinding.ActivityShowErrorBinding;
import de.dennisguse.opentracks.databinding.TrackListBinding;
public class ShowErrorActivity extends AbstractActivity {
public static final String EXTRA_ERROR_TEXT = "error";
private ActivityShowErrorBinding viewBinding;
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
viewBinding.textViewError.setText(getIntent().getStringExtra(EXTRA_ERROR_TEXT));
viewBinding.bottomAppBarLayout.bottomAppBarTitle.setText(createErrorTitle());
setSupportActionBar(viewBinding.bottomAppBarLayout.bottomAppBar);
}
@Override
protected View getRootView() {
viewBinding = ActivityShowErrorBinding.inflate(getLayoutInflater());
return viewBinding.getRoot();
}
private String createErrorTitle() {
return String.format(getString(R.string.error_crash_title), getString(R.string.app_name));
}
private void reportBug() {
Uri uriUrl;
try {
uriUrl = Uri.parse(
String.format(
getString(R.string.report_issue_link),
URLEncoder.encode(viewBinding.textViewError.getText().toString(), StandardCharsets.UTF_8.toString())
)
);
} catch (final UnsupportedEncodingException ignored) {
// can't happen as UTF-8 is always available
return;
}
Intent intent = new Intent(Intent.ACTION_VIEW, uriUrl);
startActivity(intent);
}
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
getMenuInflater().inflate(R.menu.show_error, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
if (item.getItemId() == R.id.error_share) {
onClickedShare();
return true;
} else if (item.getItemId() == R.id.error_report) {
reportBug();
return true;
}
return super.onOptionsItemSelected(item);
}
private void onClickedShare() {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_SUBJECT, createErrorTitle());
intent.putExtra(Intent.EXTRA_TEXT, viewBinding.textViewError.getText());
intent.setType("text/plain");
startActivity(intent);
}
}