fork download
  1. package com.some.some;
  2.  
  3. import androidx.annotation.NonNull;
  4. import androidx.appcompat.app.AppCompatActivity;
  5. import androidx.core.app.ActivityCompat;
  6. import androidx.core.content.ContextCompat;
  7. import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
  8.  
  9. import android.Manifest;
  10. import android.annotation.SuppressLint;
  11. import android.app.Activity;
  12. import android.app.AlertDialog;
  13. import android.content.Context;
  14. import android.content.Intent;
  15. import android.content.pm.ActivityInfo;
  16. import android.content.pm.PackageManager;
  17. import android.graphics.Bitmap;
  18. import android.graphics.BitmapFactory;
  19. import android.graphics.Color;
  20. import android.graphics.Rect;
  21. import android.graphics.drawable.ColorDrawable;
  22. import android.location.LocationManager;
  23. import android.net.ConnectivityManager;
  24. import android.net.NetworkInfo;
  25. import android.net.Uri;
  26. import android.os.Build;
  27. import android.os.Bundle;
  28. import android.os.Environment;
  29. import android.os.Handler;
  30. import android.provider.MediaStore;
  31. import android.provider.Settings;
  32. import android.util.DisplayMetrics;
  33. import android.util.Log;
  34. import android.view.View;
  35. import android.view.Window;
  36. import android.webkit.DownloadListener;
  37. import android.webkit.GeolocationPermissions;
  38. import android.webkit.PermissionRequest;
  39. import android.webkit.ValueCallback;
  40. import android.webkit.WebChromeClient;
  41. import android.webkit.WebSettings;
  42. import android.webkit.WebView;
  43. import android.webkit.WebViewClient;
  44. import android.widget.Button;
  45. import android.widget.FrameLayout;
  46. import android.widget.ProgressBar;
  47. import android.widget.Toast;
  48.  
  49. import java.io.File;
  50. import java.io.IOException;
  51. import java.text.SimpleDateFormat;
  52. import java.util.Date;
  53.  
  54. import android.app.DownloadManager;
  55.  
  56. public class MainActivity extends AppCompatActivity {
  57.  
  58. private WebView webview;
  59. ProgressBar progressBar;
  60. ProgressBar progressBar2;
  61. AlertDialog alertDialog;
  62. private SwipeRefreshLayout swipeRefreshLayout;
  63.  
  64. String appurl= "https://x...content-available-to-author-only...o.com/home.php";
  65. String TELPREFIX = "tel:";
  66.  
  67. private ValueCallback<Uri> mUploadMessage;
  68. private final static int FILECHOOSER_RESULTCODE=1;
  69. public ValueCallback<Uri[]> uploadMessage;
  70. private int LOCATION_PERMISSION_CODE = 1;
  71.  
  72.  
  73.  
  74. public static final int INPUT_FILE_REQUEST_CODE = 1;
  75. public static final String EXTRA_FROM_NOTIFICATION = "EXTRA_FROM_NOTIFICATION";
  76. private ValueCallback<Uri[]> mFilePathCallback;
  77. private String mCameraPhotoPath;
  78.  
  79. private static final int PERMISSION_REQUEST_CODE = 200;
  80.  
  81. @SuppressLint("SetJavaScriptEnabled")
  82. @Override
  83. protected void onCreate(Bundle savedInstanceState) {
  84. super.onCreate(savedInstanceState);
  85. setContentView(R.layout.activity_main);
  86. View decor = getWindow().getDecorView();
  87. decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);//SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
  88.  
  89. FullScreencall();
  90.  
  91. try { trimCache(this); }
  92. catch (Exception e){ }
  93.  
  94. webview=(WebView)findViewById(R.id.webView);
  95. progressBar=findViewById(R.id.progressBar);
  96. // swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout);
  97. // swipeRefreshLayout.setOnRefreshListener(MainActivity.this);
  98.  
  99. //webview.setWebChromeClient(new CustomChrome());
  100. webview.setWebViewClient(new WebViewClient());
  101. WebSettings webSettings = webview.getSettings();
  102. webSettings.setJavaScriptEnabled(true);
  103. webSettings.setAllowFileAccess(true);
  104. webSettings.setAppCacheEnabled(true);
  105.  
  106. webview.getSettings().setDomStorageEnabled(true);
  107. webview.getSettings().setJavaScriptEnabled(true);
  108. webSettings.setJavaScriptEnabled(true);
  109. webview.getSettings().setUserAgentString(webview.getSettings().getUserAgentString());
  110. //webview.getSettings().setUserAgentString(webview.getSettings().getUserAgentString().replace("; wv", ""));
  111. String MyUA = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 " +
  112. "(KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36";
  113. webview.getSettings().setUserAgentString(MyUA);
  114. // for mute or unmute sound
  115. webSettings.setMediaPlaybackRequiresUserGesture(false);
  116.  
  117. // webview.setWebChromeClient(new WebChromeClient(){
  118. // @Override
  119. // public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
  120. // callback.invoke(origin, true, true);
  121. // super.onGeolocationPermissionsShowPrompt(origin, callback);
  122. // }
  123. //
  124. // @Override
  125. // public void onPermissionRequest(PermissionRequest request) {
  126. // super.onPermissionRequest(request);
  127. // request.grant(request.getResources());
  128. //
  129. // }
  130. //
  131. // @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
  132. // public boolean onShowFileChooser(WebView mWebView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams)
  133. // {
  134. // if (uploadMessage != null) {
  135. // uploadMessage.onReceiveValue(null);
  136. // uploadMessage = null;
  137. // }
  138. //
  139. // uploadMessage = filePathCallback;
  140. //
  141. // Intent intent = fileChooserParams.createIntent();
  142. // try
  143. // {
  144. // startActivityForResult(intent, 100);
  145. // } catch (ActivityNotFoundException e)
  146. // {
  147. // uploadMessage = null;
  148. // Toast.makeText(getApplicationContext(), "Cannot Open File Chooser", Toast.LENGTH_LONG).show();
  149. // return false;
  150. // }
  151. // return true;
  152. // }
  153. //
  154. // });
  155. //
  156.  
  157.  
  158. webview.getSettings().setSupportMultipleWindows(true);
  159.  
  160.  
  161. webview.setDownloadListener(new DownloadListener() {
  162.  
  163. @Override
  164. public void onDownloadStart(String url, String userAgent,
  165. String contentDisposition, String mimetype,
  166. long contentLength) {
  167. DownloadManager.Request request = new DownloadManager.Request(
  168. Uri.parse(url));
  169.  
  170. request.allowScanningByMediaScanner();
  171. request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); //Notify client once download is completed!
  172. request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "Name of your downloadble file goes here, example: Mathematics II ");
  173. DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
  174. dm.enqueue(request);
  175. Toast.makeText(getApplicationContext(), "Downloading File", //To notify the Client that the file is being downloaded
  176. Toast.LENGTH_LONG).show();
  177.  
  178. }
  179. });
  180.  
  181.  
  182. webview.setWebChromeClient(new WebChromeClient() {
  183. @Override
  184. public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
  185. callback.invoke(origin, true, true);
  186. super.onGeolocationPermissionsShowPrompt(origin, callback);
  187. }
  188.  
  189.  
  190. @Override
  191. public void onPermissionRequest(PermissionRequest request) {
  192. super.onPermissionRequest(request);
  193. request.grant(request.getResources());
  194.  
  195. }
  196.  
  197. // @Override
  198. // public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
  199. // //return super.onCreateWindow(view, isDialog, isUserGesture, resultMsg);
  200. // WebView.HitTestResult result = view.getHitTestResult();
  201. // String data = result.getExtra();
  202. // Context context = view.getContext();
  203. // if (data != null && data.contains("_blanks")) {
  204. // Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(data));
  205. // browserIntent.setPackage("com.android.chrome");
  206. // Toast.makeText(context, "create", Toast.LENGTH_SHORT).show();
  207. // context.startActivity(browserIntent);
  208. // return false;
  209. // }
  210. // return false;
  211. // }
  212.  
  213. public boolean onShowFileChooser(
  214. WebView webView, ValueCallback<Uri[]> filePathCallback,
  215. WebChromeClient.FileChooserParams fileChooserParams) {
  216. if(mFilePathCallback != null) {
  217. mFilePathCallback.onReceiveValue(null);
  218. }
  219. mFilePathCallback = filePathCallback;
  220.  
  221. Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  222. if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
  223. // Create the File where the photo should go
  224. File photoFile = null;
  225. try {
  226. photoFile = createImageFile();
  227. takePictureIntent.putExtra("PhotoPath", mCameraPhotoPath);
  228. } catch (IOException ex) {
  229. // Error occurred while creating the File
  230. Log.e("TAG", "Unable to create Image File", ex);
  231. }
  232.  
  233. // Continue only if the File was successfully created
  234. if (photoFile != null) {
  235. mCameraPhotoPath = "file:" + photoFile.getAbsolutePath();
  236. takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
  237. Uri.fromFile(photoFile));
  238. } else {
  239. takePictureIntent = null;
  240. }
  241. }
  242.  
  243. Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT);
  244. contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE);
  245. contentSelectionIntent.setType("image/*");
  246.  
  247. Intent[] intentArray;
  248. if(takePictureIntent != null) {
  249. intentArray = new Intent[]{takePictureIntent};
  250. } else {
  251. intentArray = new Intent[0];
  252. }
  253.  
  254. Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER);
  255. chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent);
  256. chooserIntent.putExtra(Intent.EXTRA_TITLE, "Image Chooser");
  257. chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
  258.  
  259. startActivityForResult(chooserIntent, INPUT_FILE_REQUEST_CODE);
  260.  
  261. return true;
  262. }
  263. });
  264.  
  265.  
  266.  
  267. if ( Build.VERSION.SDK_INT >= 23){
  268. if (ActivityCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.ACCESS_FINE_LOCATION) !=
  269. PackageManager.PERMISSION_GRANTED ){
  270. // requestPermissions(new String[]{
  271. // android.Manifest.permission.ACCESS_FINE_LOCATION},
  272. // LOCATION_PERMISSION_CODE);
  273. // ActivityCompat.requestPermissions(MainActivity.this,
  274. // new String[] {android.Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_PERMISSION_CODE);
  275.  
  276. ActivityCompat.requestPermissions(MainActivity.this,
  277. new String[] {android.Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_PERMISSION_CODE);
  278.  
  279.  
  280.  
  281. //return ;
  282. } else {
  283. if (canGetLocation()) {
  284. //DO SOMETHING USEFUL HERE. ALL GPS PROVIDERS ARE CURRENTLY ENABLED
  285. } else {
  286. //SHOW OUR SETTINGS ALERT, AND LET THE USE TURN ON ALL THE GPS PROVIDERS
  287. Intent intent = new Intent(
  288. Settings.ACTION_LOCATION_SOURCE_SETTINGS);
  289. startActivity(intent);
  290. }
  291. }
  292. }
  293.  
  294. // checkPermission();
  295.  
  296. if (isConnected()){
  297. progressBar.setVisibility(View.VISIBLE);
  298. loadWeburl(appurl);
  299. } else {
  300. Toast.makeText(MainActivity.this, "No internet connection", Toast.LENGTH_SHORT).show();
  301. noInternetAlertDialog();
  302. }
  303.  
  304. }
  305.  
  306.  
  307. // hide botoom navigation bar buttons
  308. public void FullScreencall() {
  309. if(Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api
  310. View v = this.getWindow().getDecorView();
  311. v.setSystemUiVisibility(View.GONE);
  312. } else if(Build.VERSION.SDK_INT >= 19) {
  313. //for new api versions.
  314. View decorView = getWindow().getDecorView();
  315. int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;// View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | // View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
  316. decorView.setSystemUiVisibility(uiOptions);
  317. }
  318. }
  319.  
  320.  
  321.  
  322. //////////////////////////////////// check internet connection ////////////////////////////////////
  323. public boolean isConnected() {
  324. boolean connected = false;
  325. try {
  326. ConnectivityManager cm = (ConnectivityManager)getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
  327. NetworkInfo nInfo = cm.getActiveNetworkInfo();
  328. connected = nInfo != null && nInfo.isAvailable() && nInfo.isConnected();
  329. return connected;
  330. } catch (Exception e) {
  331. Log.e("Connectivity Exception", e.getMessage());
  332. }
  333. return connected;
  334. }
  335.  
  336.  
  337. //////////////////////////////////// load Web url ////////////////////////////////////
  338. private void loadWeburl(String url){
  339.  
  340. webview.setWebViewClient(new WebViewClient() {
  341. public boolean shouldOverrideUrlLoading(WebView view, String url) {
  342.  
  343. Log.i("TAG", "Processing webview url click...");
  344. progressBar.setVisibility(View.VISIBLE);
  345. // stopping swipe refresh
  346. // swipeRefreshLayout.setRefreshing(false);
  347. // view.loadUrl(url);
  348.  
  349. try { trimCache(getApplicationContext()); }
  350. catch (Exception e){ }
  351.  
  352. if (url != null && url.startsWith("whatsapp://")) {
  353. view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
  354. return true;
  355. } else if (url.startsWith(TELPREFIX)) {
  356. Intent intent = new Intent(Intent.ACTION_DIAL);
  357. intent.setData(Uri.parse(url));
  358. startActivity(intent);
  359. return true;
  360. } else {
  361. view.loadUrl(url);
  362. appurl = url;
  363. }
  364.  
  365.  
  366.  
  367. return true;
  368. }
  369.  
  370. public void onPageFinished(WebView view, String url) {
  371. Log.i("TAG", "Finished loading URL: " + url);
  372. // stopping swipe refresh
  373. // swipeRefreshLayout.setRefreshing(false);
  374. // webview.loadUrl("javascript:MyApp.resize(document.body.getBoundingClientRect().height)");
  375.  
  376. progressBar.setVisibility(View.GONE);
  377. }
  378.  
  379. public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
  380. Log.e("TAG", "Error: " + description);
  381. //Toast.makeText(Main.this, "Oh no! " + description, Toast.LENGTH_SHORT).show();
  382. progressBar.setVisibility(View.GONE);
  383. // stopping swipe refresh
  384. // swipeRefreshLayout.setRefreshing(false);
  385. if (!isConnected()){
  386. Toast.makeText(MainActivity.this, "No internet connection", Toast.LENGTH_SHORT).show();
  387. noInternetAlertDialog();
  388.  
  389. }
  390.  
  391. }
  392. });
  393. webview.loadUrl(url);
  394.  
  395. }
  396.  
  397.  
  398. //////////////////////////////////// View no Internet AlertDialog ////////////////////////////////////
  399. private void noInternetAlertDialog() {
  400.  
  401.  
  402. AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this).setCancelable(false);
  403. dialogBuilder.setView(R.layout.nointernet_view);
  404. alertDialog = dialogBuilder.create();
  405. alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
  406. alertDialog.show();
  407.  
  408. Button tryAgainBtn = alertDialog.findViewById(R.id.tryagainBtn);
  409. progressBar2 = alertDialog.findViewById(R.id.progressBar2);
  410. progressBar2.setVisibility(View.GONE);
  411. tryAgainBtn.setOnClickListener(new View.OnClickListener() {
  412. @Override
  413. public void onClick(View v) {
  414. progressBar2.setVisibility(View.VISIBLE);
  415. new Handler().postDelayed(new Runnable() {
  416. @Override
  417. public void run() {
  418. if (isConnected()){
  419.  
  420. progressBar2.setVisibility(View.GONE);
  421. alertDialog.dismiss();
  422. progressBar.setVisibility(View.VISIBLE);
  423. loadWeburl(appurl);
  424. } else {
  425. Toast.makeText(MainActivity.this, "No internet connection", Toast.LENGTH_SHORT).show();
  426. progressBar2.setVisibility(View.GONE);
  427. alertDialog.dismiss();
  428. noInternetAlertDialog();
  429. }
  430. }
  431. }, 10000);
  432.  
  433.  
  434. }
  435. });
  436.  
  437.  
  438. // Creating Dynamic
  439. Rect displayRectangle = new Rect();
  440. DisplayMetrics displayMetrics = new DisplayMetrics();
  441. getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
  442. int widthLcl = (int) (displayMetrics.widthPixels*1f);
  443. int heightLcl = (int) (displayMetrics.heightPixels*1f);
  444.  
  445. Window window = getWindow();
  446. window.getDecorView().getWindowVisibleDisplayFrame(displayRectangle); //(displayRectangle.width() * 0.9f
  447. alertDialog.getWindow().setLayout((int) (widthLcl), heightLcl); //alertDialog.getWindow().getAttributes().height
  448.  
  449. }
  450.  
  451. // @SuppressLint("MissingSuperCall")
  452. // @Override
  453. // protected void onActivityResult(int requestCode, int resultCode,
  454. // Intent intent) {
  455. //
  456. // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
  457. // if (requestCode == 100) {
  458. // if (uploadMessage == null)
  459. // return;
  460. // uploadMessage.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, intent));
  461. // uploadMessage = null;
  462. // }
  463. // } else if (requestCode == FILECHOOSER_RESULTCODE) {
  464. // if (null == mUploadMessage)
  465. // return;
  466. //
  467. // Uri result = intent == null || resultCode != MainActivity.RESULT_OK ? null : intent.getData();
  468. // mUploadMessage.onReceiveValue(result);
  469. // mUploadMessage = null;
  470. // } else
  471. // Toast.makeText(getApplicationContext(), "Failed to Upload Image", Toast.LENGTH_LONG).show();
  472. // }
  473.  
  474.  
  475. @Override
  476. public void onActivityResult (int requestCode, int resultCode, Intent data) {
  477. if(requestCode != INPUT_FILE_REQUEST_CODE || mFilePathCallback == null) {
  478. super.onActivityResult(requestCode, resultCode, data);
  479. return;
  480. }
  481.  
  482. Uri[] results = null;
  483.  
  484. // Check that the response is a good one
  485. if(resultCode == Activity.RESULT_OK) {
  486. if(data == null) {
  487. // If there is not data, then we may have taken a photo
  488. if(mCameraPhotoPath != null) {
  489. results = new Uri[]{Uri.parse(mCameraPhotoPath)};
  490. }
  491. } else {
  492. String dataString = data.getDataString();
  493. if (dataString != null) {
  494. results = new Uri[]{Uri.parse(dataString)};
  495. }
  496. }
  497. }
  498.  
  499. mFilePathCallback.onReceiveValue(results);
  500. mFilePathCallback = null;
  501. return;
  502. }
  503.  
  504.  
  505. @Override
  506. public void onBackPressed() {
  507. if (webview.canGoBack()) {
  508. webview.goBack();
  509. } else {
  510. super.onBackPressed();
  511. finish();
  512. }
  513. }
  514.  
  515. @Override
  516. protected void onSaveInstanceState(Bundle outState) {
  517. super.onSaveInstanceState(outState);
  518. webview.saveState(outState);
  519. }
  520.  
  521. @Override
  522. protected void onRestoreInstanceState(Bundle savedInstanceState) {
  523. super.onRestoreInstanceState(savedInstanceState);
  524. webview.restoreState(savedInstanceState);
  525. }
  526.  
  527. private class CustomChrome extends WebChromeClient {
  528. private View mCustomView;
  529. private WebChromeClient.CustomViewCallback mCustomViewCallback;
  530.  
  531. //protected FrameLayout mFullscreenContainer;
  532. //private int mOriginalOrientation;
  533. private int mOriginalSystemUiVisibility;
  534.  
  535. CustomChrome() {
  536. }
  537.  
  538. public Bitmap getDefaultVideoPoster() {
  539. if (mCustomView == null) {
  540. return null;
  541. }
  542. return BitmapFactory.decodeResource(getApplicationContext().getResources(), 2130837573);
  543. }
  544.  
  545. @SuppressLint("SourceLockedOrientationActivity")
  546. public void onHideCustomView() {
  547. ((FrameLayout) getWindow().getDecorView()).removeView(this.mCustomView);
  548. this.mCustomView = null;
  549. getWindow().getDecorView().setSystemUiVisibility(this.mOriginalSystemUiVisibility);
  550. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
  551. this.mCustomViewCallback.onCustomViewHidden();
  552. this.mCustomViewCallback = null;
  553. }
  554.  
  555. @SuppressLint("SourceLockedOrientationActivity")
  556. public void onShowCustomView(View paramView, WebChromeClient.CustomViewCallback paramCustomViewCallback) {
  557. if (this.mCustomView != null) {
  558. onHideCustomView();
  559. return;
  560. }
  561. this.mCustomView = paramView;
  562. this.mOriginalSystemUiVisibility = getWindow().getDecorView().getSystemUiVisibility();
  563. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
  564. //this.mOriginalOrientation = getRequestedOrientation();
  565. this.mCustomViewCallback = paramCustomViewCallback;
  566. ((FrameLayout) getWindow().getDecorView()).addView(this.mCustomView, new FrameLayout.LayoutParams(-1, -1));
  567. getWindow().getDecorView().setSystemUiVisibility(3846);
  568. }
  569.  
  570. }
  571.  
  572.  
  573.  
  574.  
  575. @Override
  576. public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
  577. super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  578. if (requestCode == LOCATION_PERMISSION_CODE) {
  579. if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
  580. // Toast.makeText(this, "Permission GRANTED", Toast.LENGTH_SHORT).show();
  581. if (canGetLocation()) {
  582. //DO SOMETHING USEFUL HERE. ALL GPS PROVIDERS ARE CURRENTLY ENABLED
  583. // if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA)
  584. // != PackageManager.PERMISSION_GRANTED) {
  585. // // Permission is not granted
  586. // ActivityCompat.requestPermissions(this,
  587. // new String[]{android.Manifest.permission.CAMERA},
  588. // PERMISSION_REQUEST_CODE);
  589. //
  590. // }
  591. } else {
  592. //SHOW OUR SETTINGS ALERT, AND LET THE USE TURN ON ALL THE GPS PROVIDERS
  593. Intent intent = new Intent(
  594. Settings.ACTION_LOCATION_SOURCE_SETTINGS);
  595. startActivity(intent);
  596. }
  597.  
  598. // if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA)
  599. // != PackageManager.PERMISSION_GRANTED) {
  600. // // Permission is not granted
  601. // ActivityCompat.requestPermissions(this,
  602. // new String[]{android.Manifest.permission.CAMERA},
  603. // PERMISSION_REQUEST_CODE);
  604. //
  605. // }
  606. //
  607. // } else {
  608. // // Toast.makeText(this, "Permission DENIED", Toast.LENGTH_SHORT).show();
  609. } else if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_DENIED){
  610. finish();
  611. }
  612. }
  613.  
  614. if (requestCode == PERMISSION_REQUEST_CODE) {
  615. if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
  616. // Toast.makeText(getApplicationContext(), "Permission Granted", Toast.LENGTH_SHORT).show();
  617.  
  618. if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
  619. != PackageManager.PERMISSION_GRANTED) {
  620. // Permission is not granted
  621. ActivityCompat.requestPermissions(this,
  622. new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
  623. LOCATION_PERMISSION_CODE);
  624. }
  625.  
  626. // main logic
  627. } else {
  628. //Toast.makeText(getApplicationContext(), "Permission Denied", Toast.LENGTH_SHORT).show();
  629. }
  630. }
  631.  
  632. }
  633.  
  634. public boolean canGetLocation() {
  635. boolean result = true;
  636. LocationManager lm;
  637. boolean gpsEnabled = false;
  638. boolean networkEnabled = false;
  639.  
  640. lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
  641.  
  642. // exceptions will be thrown if provider is not permitted.
  643. try {
  644. gpsEnabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
  645. } catch (Exception ex) {
  646. }
  647.  
  648. try {
  649. networkEnabled = lm
  650. .isProviderEnabled(LocationManager.NETWORK_PROVIDER);
  651. } catch (Exception ex) {
  652. }
  653.  
  654. return gpsEnabled && networkEnabled;
  655. }
  656.  
  657.  
  658.  
  659. private File createImageFile() throws IOException {
  660. // Create an image file name
  661. String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
  662. String imageFileName = "JPEG_" + timeStamp + "_";
  663. File storageDir = Environment.getExternalStoragePublicDirectory(
  664. Environment.DIRECTORY_PICTURES);
  665. File imageFile = File.createTempFile(
  666. imageFileName, /* prefix */
  667. ".jpg", /* suffix */
  668. storageDir /* directory */
  669. );
  670. return imageFile;
  671. }
  672.  
  673. private void checkPermission() {
  674.  
  675. if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA)
  676. != PackageManager.PERMISSION_GRANTED) {
  677. // Permission is not granted
  678. ActivityCompat.requestPermissions(this,
  679. new String[]{android.Manifest.permission.CAMERA},
  680. PERMISSION_REQUEST_CODE);
  681.  
  682. }
  683. // if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
  684. // != PackageManager.PERMISSION_GRANTED) {
  685. // // Permission is not granted
  686. // ActivityCompat.requestPermissions(this,
  687. // new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
  688. // LOCATION_PERMISSION_CODE);
  689. //
  690. // }
  691.  
  692. }
  693.  
  694. private void requestPermission() {
  695.  
  696. ActivityCompat.requestPermissions(this,
  697. new String[]{android.Manifest.permission.CAMERA},
  698. PERMISSION_REQUEST_CODE);
  699. }
  700.  
  701.  
  702.  
  703. @Override
  704. protected void onDestroy() {
  705. // TODO Auto-generated method stub
  706. super.onDestroy();
  707. try { trimCache(this); }
  708. catch (Exception e){ }
  709.  
  710. }
  711.  
  712. public static boolean trimCache(Context context) {
  713. try {
  714. File dir = context.getCacheDir();
  715. if (dir != null && dir.isDirectory()) {
  716. return deleteDir(dir);
  717. }
  718. } catch (Exception e) {
  719. // TODO: handle exception
  720. }
  721. return false;
  722. }
  723.  
  724. public static boolean deleteDir(File dir) {
  725. if (dir != null && dir.isDirectory()) {
  726. String[] children = dir.list();
  727. for (int i = 0; i < children.length; i++) {
  728. boolean success = deleteDir(new File(dir, children[i]));
  729. if (!success) {
  730. return false;
  731. }
  732. }
  733. }
  734. // The directory is now empty so delete it
  735. return dir.delete();
  736. }
  737.  
  738.  
  739.  
  740. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:56: error: class MainActivity is public, should be declared in a file named MainActivity.java
public class MainActivity extends AppCompatActivity {
       ^
Main.java:3: error: package androidx.annotation does not exist
import androidx.annotation.NonNull;
                          ^
Main.java:4: error: package androidx.appcompat.app does not exist
import androidx.appcompat.app.AppCompatActivity;
                             ^
Main.java:5: error: package androidx.core.app does not exist
import androidx.core.app.ActivityCompat;
                        ^
Main.java:6: error: package androidx.core.content does not exist
import androidx.core.content.ContextCompat;
                            ^
Main.java:7: error: package androidx.swiperefreshlayout.widget does not exist
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
                                         ^
Main.java:9: error: package android does not exist
import android.Manifest;
              ^
Main.java:10: error: package android.annotation does not exist
import android.annotation.SuppressLint;
                         ^
Main.java:11: error: package android.app does not exist
import android.app.Activity;
                  ^
Main.java:12: error: package android.app does not exist
import android.app.AlertDialog;
                  ^
Main.java:13: error: package android.content does not exist
import android.content.Context;
                      ^
Main.java:14: error: package android.content does not exist
import android.content.Intent;
                      ^
Main.java:15: error: package android.content.pm does not exist
import android.content.pm.ActivityInfo;
                         ^
Main.java:16: error: package android.content.pm does not exist
import android.content.pm.PackageManager;
                         ^
Main.java:17: error: package android.graphics does not exist
import android.graphics.Bitmap;
                       ^
Main.java:18: error: package android.graphics does not exist
import android.graphics.BitmapFactory;
                       ^
Main.java:19: error: package android.graphics does not exist
import android.graphics.Color;
                       ^
Main.java:20: error: package android.graphics does not exist
import android.graphics.Rect;
                       ^
Main.java:21: error: package android.graphics.drawable does not exist
import android.graphics.drawable.ColorDrawable;
                                ^
Main.java:22: error: package android.location does not exist
import android.location.LocationManager;
                       ^
Main.java:23: error: package android.net does not exist
import android.net.ConnectivityManager;
                  ^
Main.java:24: error: package android.net does not exist
import android.net.NetworkInfo;
                  ^
Main.java:25: error: package android.net does not exist
import android.net.Uri;
                  ^
Main.java:26: error: package android.os does not exist
import android.os.Build;
                 ^
Main.java:27: error: package android.os does not exist
import android.os.Bundle;
                 ^
Main.java:28: error: package android.os does not exist
import android.os.Environment;
                 ^
Main.java:29: error: package android.os does not exist
import android.os.Handler;
                 ^
Main.java:30: error: package android.provider does not exist
import android.provider.MediaStore;
                       ^
Main.java:31: error: package android.provider does not exist
import android.provider.Settings;
                       ^
Main.java:32: error: package android.util does not exist
import android.util.DisplayMetrics;
                   ^
Main.java:33: error: package android.util does not exist
import android.util.Log;
                   ^
Main.java:34: error: package android.view does not exist
import android.view.View;
                   ^
Main.java:35: error: package android.view does not exist
import android.view.Window;
                   ^
Main.java:36: error: package android.webkit does not exist
import android.webkit.DownloadListener;
                     ^
Main.java:37: error: package android.webkit does not exist
import android.webkit.GeolocationPermissions;
                     ^
Main.java:38: error: package android.webkit does not exist
import android.webkit.PermissionRequest;
                     ^
Main.java:39: error: package android.webkit does not exist
import android.webkit.ValueCallback;
                     ^
Main.java:40: error: package android.webkit does not exist
import android.webkit.WebChromeClient;
                     ^
Main.java:41: error: package android.webkit does not exist
import android.webkit.WebSettings;
                     ^
Main.java:42: error: package android.webkit does not exist
import android.webkit.WebView;
                     ^
Main.java:43: error: package android.webkit does not exist
import android.webkit.WebViewClient;
                     ^
Main.java:44: error: package android.widget does not exist
import android.widget.Button;
                     ^
Main.java:45: error: package android.widget does not exist
import android.widget.FrameLayout;
                     ^
Main.java:46: error: package android.widget does not exist
import android.widget.ProgressBar;
                     ^
Main.java:47: error: package android.widget does not exist
import android.widget.Toast;
                     ^
Main.java:54: error: package android.app does not exist
import android.app.DownloadManager;
                  ^
Main.java:56: error: cannot find symbol
public class MainActivity extends AppCompatActivity {
                                  ^
  symbol: class AppCompatActivity
Main.java:58: error: cannot find symbol
    private WebView webview;
            ^
  symbol:   class WebView
  location: class MainActivity
Main.java:59: error: cannot find symbol
    ProgressBar progressBar;
    ^
  symbol:   class ProgressBar
  location: class MainActivity
Main.java:60: error: cannot find symbol
    ProgressBar progressBar2;
    ^
  symbol:   class ProgressBar
  location: class MainActivity
Main.java:61: error: cannot find symbol
    AlertDialog alertDialog;
    ^
  symbol:   class AlertDialog
  location: class MainActivity
Main.java:62: error: cannot find symbol
    private SwipeRefreshLayout swipeRefreshLayout;
            ^
  symbol:   class SwipeRefreshLayout
  location: class MainActivity
Main.java:67: error: cannot find symbol
    private ValueCallback<Uri> mUploadMessage;
            ^
  symbol:   class ValueCallback
  location: class MainActivity
Main.java:67: error: cannot find symbol
    private ValueCallback<Uri> mUploadMessage;
                          ^
  symbol:   class Uri
  location: class MainActivity
Main.java:69: error: cannot find symbol
    public ValueCallback<Uri[]> uploadMessage;
           ^
  symbol:   class ValueCallback
  location: class MainActivity
Main.java:69: error: cannot find symbol
    public ValueCallback<Uri[]> uploadMessage;
                         ^
  symbol:   class Uri
  location: class MainActivity
Main.java:76: error: cannot find symbol
    private ValueCallback<Uri[]> mFilePathCallback;
            ^
  symbol:   class ValueCallback
  location: class MainActivity
Main.java:76: error: cannot find symbol
    private ValueCallback<Uri[]> mFilePathCallback;
                          ^
  symbol:   class Uri
  location: class MainActivity
Main.java:83: error: cannot find symbol
    protected void onCreate(Bundle savedInstanceState) {
                            ^
  symbol:   class Bundle
  location: class MainActivity
Main.java:476: error: cannot find symbol
    public void onActivityResult (int requestCode, int resultCode, Intent data) {
                                                                   ^
  symbol:   class Intent
  location: class MainActivity
Main.java:516: error: cannot find symbol
    protected void onSaveInstanceState(Bundle outState) {
                                       ^
  symbol:   class Bundle
  location: class MainActivity
Main.java:522: error: cannot find symbol
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
                                          ^
  symbol:   class Bundle
  location: class MainActivity
Main.java:712: error: cannot find symbol
    public static boolean trimCache(Context context) {
                                    ^
  symbol:   class Context
  location: class MainActivity
Main.java:527: error: cannot find symbol
    private class CustomChrome extends WebChromeClient {
                                       ^
  symbol:   class WebChromeClient
  location: class MainActivity
Main.java:528: error: cannot find symbol
        private View mCustomView;
                ^
  symbol:   class View
  location: class MainActivity.CustomChrome
Main.java:529: error: package WebChromeClient does not exist
        private WebChromeClient.CustomViewCallback mCustomViewCallback;
                               ^
Main.java:538: error: cannot find symbol
        public Bitmap getDefaultVideoPoster() {
               ^
  symbol:   class Bitmap
  location: class MainActivity.CustomChrome
Main.java:556: error: cannot find symbol
        public void onShowCustomView(View paramView, WebChromeClient.CustomViewCallback paramCustomViewCallback) {
                                     ^
  symbol:   class View
  location: class MainActivity.CustomChrome
Main.java:556: error: package WebChromeClient does not exist
        public void onShowCustomView(View paramView, WebChromeClient.CustomViewCallback paramCustomViewCallback) {
                                                                    ^
Main.java:81: error: cannot find symbol
    @SuppressLint("SetJavaScriptEnabled")
     ^
  symbol:   class SuppressLint
  location: class MainActivity
Main.java:576: error: cannot find symbol
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
                                                             ^
  symbol:   class NonNull
  location: class MainActivity
Main.java:576: error: cannot find symbol
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
                                                                                            ^
  symbol:   class NonNull
  location: class MainActivity
Main.java:545: error: cannot find symbol
        @SuppressLint("SourceLockedOrientationActivity")
         ^
  symbol:   class SuppressLint
  location: class MainActivity.CustomChrome
Main.java:555: error: cannot find symbol
        @SuppressLint("SourceLockedOrientationActivity")
         ^
  symbol:   class SuppressLint
  location: class MainActivity.CustomChrome
Main.java:82: error: method does not override or implement a method from a supertype
    @Override
    ^
Main.java:84: error: cannot find symbol
        super.onCreate(savedInstanceState);
        ^
  symbol:   variable super
  location: class MainActivity
Main.java:85: error: package R does not exist
        setContentView(R.layout.activity_main);
                        ^
Main.java:86: error: cannot find symbol
        View decor = getWindow().getDecorView();
        ^
  symbol:   class View
  location: class MainActivity
Main.java:86: error: cannot find symbol
        View decor = getWindow().getDecorView();
                     ^
  symbol:   method getWindow()
  location: class MainActivity
Main.java:87: error: cannot find symbol
        decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);//SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
                                    ^
  symbol:   variable View
  location: class MainActivity
Main.java:94: error: cannot find symbol
        webview=(WebView)findViewById(R.id.webView);
                 ^
  symbol:   class WebView
  location: class MainActivity
Main.java:94: error: package R does not exist
        webview=(WebView)findViewById(R.id.webView);
                                       ^
Main.java:95: error: package R does not exist
        progressBar=findViewById(R.id.progressBar);
                                  ^
Main.java:100: error: cannot find symbol
        webview.setWebViewClient(new WebViewClient());
                                     ^
  symbol:   class WebViewClient
  location: class MainActivity
Main.java:101: error: cannot find symbol
        WebSettings webSettings = webview.getSettings();
        ^
  symbol:   class WebSettings
  location: class MainActivity
Main.java:161: error: cannot find symbol
        webview.setDownloadListener(new DownloadListener() {
                                        ^
  symbol:   class DownloadListener
  location: class MainActivity
Main.java:163: error: method does not override or implement a method from a supertype
            @Override
            ^
Main.java:167: error: package DownloadManager does not exist
                DownloadManager.Request request = new DownloadManager.Request(
                               ^
Main.java:167: error: package DownloadManager does not exist
                DownloadManager.Request request = new DownloadManager.Request(
                                                                     ^
Main.java:168: error: cannot find symbol
                        Uri.parse(url));
                        ^
  symbol: variable Uri
Main.java:171: error: package DownloadManager does not exist
                request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); //Notify client once download is completed!
                                                                 ^
Main.java:172: error: cannot find symbol
                request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "Name of your downloadble file goes here, example: Mathematics II ");
                                                          ^
  symbol: variable Environment
Main.java:173: error: cannot find symbol
                DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
                ^
  symbol: class DownloadManager
Main.java:173: error: cannot find symbol
                DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
                                      ^
  symbol: class DownloadManager
Main.java:173: error: cannot find symbol
                DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
                                                                        ^
  symbol: variable DOWNLOAD_SERVICE
Main.java:176: error: cannot find symbol
                        Toast.LENGTH_LONG).show();
                        ^
  symbol: variable Toast
Main.java:175: error: cannot find symbol
                Toast.makeText(getApplicationContext(), "Downloading File", //To notify the Client that the file is being downloaded
                ^
  symbol: variable Toast
Main.java:175: error: cannot find symbol
                Toast.makeText(getApplicationContext(), "Downloading File", //To notify the Client that the file is being downloaded
                               ^
  symbol: method getApplicationContext()
Main.java:182: error: cannot find symbol
        webview.setWebChromeClient(new WebChromeClient() {
                                       ^
  symbol:   class WebChromeClient
  location: class MainActivity
Main.java:184: error: package GeolocationPermissions does not exist
            public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
                                                                                                ^
100 errors
stdout
Standard output is empty