diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e045ac1418eaeb3673303bee5398934e5a587c6..31363dd0f91fca51c74b6e33f3ce8d62295e04f3 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -27,19 +27,8 @@ android:theme="@style/AppTheme.NoActionBar" /> <activity android:name=".activity.epic_1.LoginActivity" - android:fullBackupContent="true" android:theme="@style/Theme.AppCompat.Light.NoActionBar"> - <intent-filter> - <action android:name="android.intent.action.VIEW" /> - <category android:name="android.intent.category.DEFAULT" /> - <category android:name="android.intent.category.BROWSABLE" /> - - <data - android:host="myui-dev.cs.ui.ac.id" - android:path="/backend/token/" - android:scheme="akuncs" /> - </intent-filter> </activity> <!-- news --> diff --git a/app/src/main/java/id/ac/ui/cs/myui/activity/epic_1/LoginActivity.java b/app/src/main/java/id/ac/ui/cs/myui/activity/epic_1/LoginActivity.java index 80a30ae2e77e19846a6c92f00b03e96a49279b53..6e2110231e1943c8ae919175e2d4f783a6772bb3 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/activity/epic_1/LoginActivity.java +++ b/app/src/main/java/id/ac/ui/cs/myui/activity/epic_1/LoginActivity.java @@ -7,14 +7,25 @@ package id.ac.ui.cs.myui.activity.epic_1; */ +import android.annotation.TargetApi; import android.content.Intent; +import android.content.IntentSender; import android.content.SharedPreferences; import android.net.Uri; +import android.net.UrlQuerySanitizer; +import android.os.Build; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; +import android.webkit.CookieManager; +import android.webkit.CookieSyncManager; +import android.webkit.WebResourceRequest; +import android.webkit.WebSettings; +import android.webkit.WebView; +import android.webkit.WebViewClient; import android.widget.Button; +import android.widget.Toast; import id.ac.ui.cs.myui.BuildConfig; import id.ac.ui.cs.myui.R; @@ -32,75 +43,74 @@ public class LoginActivity extends AppCompatActivity { SharedPreferences sharedPreferences; private String destination; + private WebView wv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_login); - //set title bar - setTitle("Halaman Login"); - sharedPreferences = getSharedPreferences("user", 0); - Intent intent = new Intent( - Intent.ACTION_VIEW, - Uri.parse(BuildConfig.AUTH_BASE_URL + "" + "oauth/authorize/?response_type=code&client_id=" + BuildConfig.CLIENT_ID + "&state=random_state_string")); - intent.putExtra("to", destination); - intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); - Log.d("launchlogin", "launch"); - startActivity(intent); - + setContentView(R.layout.activity_login_webview); - Button btnLogin = (Button) findViewById(R.id.btnLogin); - btnLogin.setOnClickListener(new View.OnClickListener() { + sharedPreferences = getSharedPreferences("user", 0); + destination = sharedPreferences.getString("destination", ""); + String loadUrl = BuildConfig.AUTH_BASE_URL+ "" + "oauth/authorize/?response_type=code&client_id=" + BuildConfig.CLIENT_ID + "&state=random_state_string"; + Log.i("loadUrl",loadUrl); + CookieSyncManager cookieSyncMngr = CookieSyncManager.createInstance(this); + CookieManager cookieManager = CookieManager.getInstance(); + cookieManager.removeAllCookie(); + wv = (WebView) findViewById(R.id.webview); + wv.clearCache(true); + wv.clearHistory(); + wv.getSettings().setJavaScriptEnabled(true); + wv.setWebViewClient(new WebViewClient(){ + @SuppressWarnings("deprecation") @Override - public void onClick(View view) { - Intent intent = new Intent( - Intent.ACTION_VIEW, - Uri.parse(BuildConfig.AUTH_BASE_URL + "" + "oauth/authorize/?response_type=code&client_id=" + BuildConfig.CLIENT_ID + "&state=random_state_string")); - intent.putExtra("to", destination); - intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); - startActivity(intent); - + public boolean shouldOverrideUrlLoading(WebView webView, String url) + { + return shouldOverrideUrlLoading(url); } - }); - } + @TargetApi(Build.VERSION_CODES.N) + @Override + public boolean shouldOverrideUrlLoading(WebView webView, WebResourceRequest request) + { + Uri uri = request.getUrl(); + return shouldOverrideUrlLoading(uri.toString()); + } - protected void onResume() { - super.onResume(); - Log.i("MASUK", "Masuk"); - destination = sharedPreferences.getString("destination", ""); - Log.i("destination", destination); - // the intent filter defined in AndroidManifest will handle the return from ACTION_VIEW intent - Uri uri = getIntent().getData(); - if (uri != null && uri.toString().startsWith(BuildConfig.REDIRECT_URI)) { - Log.i("URI", uri.toString()); - // use the parameter your API exposes for the code (mostly it's "code") - String code = uri.getQueryParameter("code"); - Log.i("CODE", code); - if (code != null) { - // get access token - try { + private boolean shouldOverrideUrlLoading(final String url) { + if(url.startsWith("akuncs://")){ + Uri uri = Uri.parse(url); + String code = uri.getQueryParameter("code"); + Log.i("CODE", code); + if (code != null) { + // get access token + try { // Do in background - if (destination.equalsIgnoreCase("ScheduleActivity")) { - ServiceGenerator serviceGenerator = new ServiceGenerator(LoginActivity.this, code, ScheduleActivity.class); - serviceGenerator.execute(); - } else if (destination.equalsIgnoreCase("PanicButtonActivity")) { - ServiceGenerator serviceGenerator = new ServiceGenerator(LoginActivity.this, code, PanicButtonActivity.class); - serviceGenerator.execute(); - } else { - ServiceGenerator serviceGenerator = new ServiceGenerator(LoginActivity.this, code, NewsHomeActivity.class); - serviceGenerator.execute(); + if (destination.equalsIgnoreCase("ScheduleActivity")) { + ServiceGenerator serviceGenerator = new ServiceGenerator(LoginActivity.this, code, ScheduleActivity.class); + serviceGenerator.execute(); + } else if (destination.equalsIgnoreCase("PanicButtonActivity")) { + ServiceGenerator serviceGenerator = new ServiceGenerator(LoginActivity.this, code, PanicButtonActivity.class); + serviceGenerator.execute(); + } else { + ServiceGenerator serviceGenerator = new ServiceGenerator(LoginActivity.this, code, NewsHomeActivity.class); + serviceGenerator.execute(); + } + } catch (Exception e) { + e.printStackTrace(); } - } catch (Exception e) { - e.printStackTrace(); + } else if (uri.getQueryParameter("error") != null) { + // show an error message here + + } + return true; } - } else if (uri.getQueryParameter("error") != null) { - // show an error message here + return false; } - } + }); + wv.loadUrl(loadUrl); - finish(); } }