You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
FoxMagiskModuleManager/app/src/main/java/com/fox2code/mmm/markdown/MarkdownActivity.java

82 lines
3.2 KiB
Java

package com.fox2code.mmm.markdown;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.Nullable;
import com.fox2code.mmm.Constants;
import com.fox2code.mmm.MainApplication;
import com.fox2code.mmm.R;
import com.fox2code.mmm.compat.CompatActivity;
import com.fox2code.mmm.utils.Http;
import com.fox2code.mmm.utils.IntentHelper;
import java.nio.charset.StandardCharsets;
public class MarkdownActivity extends CompatActivity {
private static final String TAG = "MarkdownActivity";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setDisplayHomeAsUpEnabled(true);
Intent intent = this.getIntent();
if (intent == null || !MainApplication.checkSecret(intent)) {
Log.e(TAG, "Impersonation detected!");
this.onBackPressed();
return;
}
String url = intent.getExtras()
.getString(Constants.EXTRA_MARKDOWN_URL);
String title = intent.getExtras()
.getString(Constants.EXTRA_MARKDOWN_TITLE);
String config = intent.getExtras()
.getString(Constants.EXTRA_MARKDOWN_CONFIG);
if (title != null && !title.isEmpty()) setTitle(title);
if (config != null && !config.isEmpty()) {
String configPkg = IntentHelper.getPackageOfConfig(config);
try {
this.getPackageManager().getPackageInfo(configPkg, 0);
this.setActionBarExtraMenuButton(R.drawable.ic_baseline_app_settings_alt_24, menu -> {
IntentHelper.openConfig(this, config);
return true;
});
} catch (PackageManager.NameNotFoundException e) {
Log.w(TAG, "Config package \"" +
configPkg + "\" missing for markdown view");
}
}
Log.i(TAG, "Url for markdown " + url);
setContentView(R.layout.markdown_view);
ViewGroup markdownBackground = findViewById(R.id.markdownBackground);
TextView textView = findViewById(R.id.markdownView);
new Thread(() -> {
try {
String markdown = new String(Http.doHttpGet(url, true), StandardCharsets.UTF_8);
Log.i(TAG, "Download successful");
runOnUiThread(() -> {
MainApplication.getINSTANCE().getMarkwon().setMarkdown(textView, markdown);
if (markdownBackground != null) {
markdownBackground.setClickable(true);
markdownBackground.setOnClickListener(v -> this.onBackPressed());
}
});
} catch (Exception e) {
Log.e(TAG, "Failed download", e);
runOnUiThread(() -> {
Toast.makeText(this, R.string.failed_download,
Toast.LENGTH_SHORT).show();
this.onBackPressed();
});
}
}, "Markdown load thread").start();
}
}