| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- /**
- * Copyright (c) 2006-2020 LOVE Development Team
- *
- * This software is provided 'as-is', without any express or implied
- * warranty. In no event will the authors be held liable for any damages
- * arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose,
- * including commercial applications, and to alter it and redistribute it
- * freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not
- * claim that you wrote the original software. If you use this software
- * in a product, an acknowledgment in the product documentation would be
- * appreciated but is not required.
- * 2. Altered source versions must be plainly marked as such, and must not be
- * misrepresented as being the original software.
- * 3. This notice may not be removed or altered from any source distribution.
- **/
- package org.love2d.android;
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.content.pm.PackageManager;
- import android.Manifest;
- import android.net.Uri;
- import android.os.Build;
- import android.os.Bundle;
- import android.util.Log;
- import androidx.core.app.ActivityCompat;
- public class DownloadActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q ||
- ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)
- {
- runDownloader();
- finish();
- } else {
- ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, GameActivity.EXTERNAL_STORAGE_REQUEST_CODE);
- }
- }
- @Override
- public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults);
- if (grantResults.length > 0) {
- Log.d("DownloadActivity", "Received a request permission result");
- if (requestCode == GameActivity.EXTERNAL_STORAGE_REQUEST_CODE) {
- if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- runDownloader();
- finish();
- } else {
- Log.d("DownloadActivity", "Did not get permission.");
- if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
- showExternalStoragePermissionMissingDialog();
- }
- }
- }
- else {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults);
- }
- }
- }
- protected void showExternalStoragePermissionMissingDialog() {
- AlertDialog dialog = new AlertDialog.Builder(this)
- .setTitle("Storage Permission Missing")
- .setMessage("LÖVE for Android will not be able to download games without storage permission.")
- .setNeutralButton("Continue", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- dialog.dismiss();
- finish();
- }
- })
- .create();
- dialog.show();
- }
- protected void runDownloader()
- {
- Intent intent = getIntent();
-
- if (intent != null) {
- Uri uri = intent.getData();
- Intent targetIntent = new Intent(this, DownloadService.class);
- targetIntent.putExtra("url", uri.toString());
- startService(targetIntent);
- }
- }
- }
|