mirror of
https://github.com/AngelAuraMC/Amethyst-Android.git
synced 2025-09-15 15:48:26 -04:00
Make Microsoft Login a full-screen webview
This commit is contained in:
parent
7f23031236
commit
8a44a9688b
@ -69,7 +69,9 @@
|
|||||||
android:screenOrientation="sensorLandscape"
|
android:screenOrientation="sensorLandscape"
|
||||||
android:name=".CustomControlsActivity"
|
android:name=".CustomControlsActivity"
|
||||||
android:configChanges="keyboardHidden|orientation|screenSize|keyboard|navigation"/>
|
android:configChanges="keyboardHidden|orientation|screenSize|keyboard|navigation"/>
|
||||||
|
<activity
|
||||||
|
android:screenOrientation="sensorLandscape"
|
||||||
|
android:name=".authenticator.microsoft.ui.MicrosoftLoginGUIActivity"/>
|
||||||
<activity
|
<activity
|
||||||
android:launchMode="standard"
|
android:launchMode="standard"
|
||||||
android:multiprocess="true"
|
android:multiprocess="true"
|
||||||
|
@ -43,6 +43,7 @@ import androidx.core.app.ActivityCompat;
|
|||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
import net.kdt.pojavlaunch.authenticator.microsoft.MicrosoftAuthTask;
|
import net.kdt.pojavlaunch.authenticator.microsoft.MicrosoftAuthTask;
|
||||||
|
import net.kdt.pojavlaunch.authenticator.microsoft.ui.MicrosoftLoginGUIActivity;
|
||||||
import net.kdt.pojavlaunch.authenticator.mojang.InvalidateTokenTask;
|
import net.kdt.pojavlaunch.authenticator.mojang.InvalidateTokenTask;
|
||||||
import net.kdt.pojavlaunch.authenticator.mojang.LoginListener;
|
import net.kdt.pojavlaunch.authenticator.mojang.LoginListener;
|
||||||
import net.kdt.pojavlaunch.authenticator.mojang.LoginTask;
|
import net.kdt.pojavlaunch.authenticator.mojang.LoginTask;
|
||||||
@ -356,23 +357,31 @@ public class PojavLoginActivity extends BaseActivity
|
|||||||
@Override
|
@Override
|
||||||
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
||||||
super.onActivityResult(requestCode, resultCode, data);
|
super.onActivityResult(requestCode, resultCode, data);
|
||||||
if(requestCode == MultiRTConfigDialog.MULTIRT_PICK_RUNTIME_STARTUP && resultCode == Activity.RESULT_OK) {
|
if(resultCode == Activity.RESULT_OK) {
|
||||||
if (data != null) {
|
if (requestCode == MultiRTConfigDialog.MULTIRT_PICK_RUNTIME_STARTUP) {
|
||||||
final Uri uri = data.getData();
|
if (data != null) {
|
||||||
Thread t = new Thread(()->{
|
final Uri uri = data.getData();
|
||||||
try {
|
Thread t = new Thread(() -> {
|
||||||
MultiRTUtils.installRuntimeNamed(getContentResolver().openInputStream(uri), BaseLauncherActivity.getFileName(this,uri),
|
try {
|
||||||
(resid, stuff) ->PojavLoginActivity.this.runOnUiThread(
|
MultiRTUtils.installRuntimeNamed(getContentResolver().openInputStream(uri), BaseLauncherActivity.getFileName(this, uri),
|
||||||
() -> {if(startupTextView!=null)startupTextView.setText(PojavLoginActivity.this.getString(resid,stuff));}));
|
(resid, stuff) -> PojavLoginActivity.this.runOnUiThread(
|
||||||
synchronized (mLockSelectJRE) {
|
() -> {
|
||||||
mLockSelectJRE.notifyAll();
|
if (startupTextView != null)
|
||||||
|
startupTextView.setText(PojavLoginActivity.this.getString(resid, stuff));
|
||||||
|
}));
|
||||||
|
synchronized (mLockSelectJRE) {
|
||||||
|
mLockSelectJRE.notifyAll();
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
Tools.showError(PojavLoginActivity.this
|
||||||
|
, e);
|
||||||
}
|
}
|
||||||
}catch (IOException e) {
|
});
|
||||||
Tools.showError(PojavLoginActivity.this
|
t.start();
|
||||||
,e);
|
}
|
||||||
}
|
}else if(requestCode == MicrosoftLoginGUIActivity.AUTHENTICATE_MICROSOFT_REQUEST) {
|
||||||
});
|
//Log.i("MicroLoginWrap","Got microsoft login result:" + data);
|
||||||
t.start();
|
performMicroLogin(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -411,18 +420,15 @@ public class PojavLoginActivity extends BaseActivity
|
|||||||
|
|
||||||
|
|
||||||
public void loginMicrosoft(View view) {
|
public void loginMicrosoft(View view) {
|
||||||
CustomTabs.openTab(this,
|
Intent i = new Intent(this,MicrosoftLoginGUIActivity.class);
|
||||||
"https://login.live.com/oauth20_authorize.srf" +
|
startActivityForResult(i,MicrosoftLoginGUIActivity.AUTHENTICATE_MICROSOFT_REQUEST);
|
||||||
"?client_id=00000000402b5328" +
|
|
||||||
"&response_type=code" +
|
|
||||||
"&scope=service%3A%3Auser.auth.xboxlive.com%3A%3AMBI_SSL" +
|
|
||||||
"&redirect_url=https%3A%2F%2Flogin.live.com%2Foauth20_desktop.srf");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onNewIntent(Intent intent) {
|
protected void onNewIntent(Intent intent) {
|
||||||
super.onNewIntent(intent);
|
super.onNewIntent(intent);
|
||||||
|
}
|
||||||
|
public void performMicroLogin(Intent intent) {
|
||||||
Uri data = intent.getData();
|
Uri data = intent.getData();
|
||||||
//Log.i("MicroAuth", data.toString());
|
//Log.i("MicroAuth", data.toString());
|
||||||
if (data != null && data.getScheme().equals("ms-xal-00000000402b5328") && data.getHost().equals("auth")) {
|
if (data != null && data.getScheme().equals("ms-xal-00000000402b5328") && data.getHost().equals("auth")) {
|
||||||
@ -436,22 +442,21 @@ public class PojavLoginActivity extends BaseActivity
|
|||||||
} else {
|
} else {
|
||||||
String code = data.getQueryParameter("code");
|
String code = data.getQueryParameter("code");
|
||||||
new MicrosoftAuthTask(this, new RefreshListener(){
|
new MicrosoftAuthTask(this, new RefreshListener(){
|
||||||
@Override
|
@Override
|
||||||
public void onFailed(Throwable e) {
|
public void onFailed(Throwable e) {
|
||||||
Tools.showError(PojavLoginActivity.this, e);
|
Tools.showError(PojavLoginActivity.this, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(MinecraftAccount b) {
|
public void onSuccess(MinecraftAccount b) {
|
||||||
mProfile = b;
|
mProfile = b;
|
||||||
playProfile(false);
|
playProfile(false);
|
||||||
}
|
}
|
||||||
}).execute("false", code);
|
}).execute("false", code);
|
||||||
// Toast.makeText(this, "Logged in to Microsoft account, but NYI", Toast.LENGTH_LONG).show();
|
// Toast.makeText(this, "Logged in to Microsoft account, but NYI", Toast.LENGTH_LONG).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private View getViewFromList(int pos, ListView listView) {
|
private View getViewFromList(int pos, ListView listView) {
|
||||||
final int firstItemPos = listView.getFirstVisiblePosition();
|
final int firstItemPos = listView.getFirstVisiblePosition();
|
||||||
final int lastItemPos = firstItemPos + listView.getChildCount() - 1;
|
final int lastItemPos = firstItemPos + listView.getChildCount() - 1;
|
||||||
|
@ -0,0 +1,69 @@
|
|||||||
|
package net.kdt.pojavlaunch.authenticator.microsoft.ui;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.app.ProgressDialog;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.webkit.WebResourceRequest;
|
||||||
|
import android.webkit.WebSettings;
|
||||||
|
import android.webkit.WebView;
|
||||||
|
import android.webkit.WebViewClient;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import net.kdt.pojavlaunch.R;
|
||||||
|
|
||||||
|
public class MicrosoftLoginGUIActivity extends AppCompatActivity {
|
||||||
|
public static final int AUTHENTICATE_MICROSOFT_REQUEST = 60;
|
||||||
|
WebView webView;
|
||||||
|
ProgressDialog waitDialog;
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
waitDialog = new ProgressDialog(this);
|
||||||
|
waitDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
|
||||||
|
waitDialog.setIndeterminate(true);
|
||||||
|
waitDialog.setMessage(getString(R.string.global_waiting));
|
||||||
|
webView = new WebView(this);
|
||||||
|
webView.setWebViewClient(new WebViewTrackClient());
|
||||||
|
WebSettings settings = webView.getSettings();
|
||||||
|
settings.setJavaScriptEnabled(true);
|
||||||
|
webView.loadUrl("https://login.live.com/oauth20_authorize.srf" +
|
||||||
|
"?client_id=00000000402b5328" +
|
||||||
|
"&response_type=code" +
|
||||||
|
"&scope=service%3A%3Auser.auth.xboxlive.com%3A%3AMBI_SSL" +
|
||||||
|
"&redirect_url=https%3A%2F%2Flogin.live.com%2Foauth20_desktop.srf");
|
||||||
|
setContentView(webView);
|
||||||
|
}
|
||||||
|
class WebViewTrackClient extends WebViewClient {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
||||||
|
if(url.startsWith("ms-xal-00000000402b5328")) {
|
||||||
|
Intent data = new Intent();
|
||||||
|
data.setData(Uri.parse(url));
|
||||||
|
if(waitDialog.isShowing()) waitDialog.dismiss();
|
||||||
|
setResult(Activity.RESULT_OK,data);
|
||||||
|
finish();
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
return super.shouldOverrideUrlLoading(view, url);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPageStarted(WebView view, String url, Bitmap favicon) {
|
||||||
|
//super.onPageStarted(view, url, favicon);
|
||||||
|
if(!waitDialog.isShowing()) waitDialog.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPageFinished(WebView view, String url) {
|
||||||
|
waitDialog.hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user