diff --git a/examples/androidapp/AndroidManifest.xml b/examples/androidapp/AndroidManifest.xml index 6edb0c1d02..d6e0ff0417 100644 --- a/examples/androidapp/AndroidManifest.xml +++ b/examples/androidapp/AndroidManifest.xml @@ -8,7 +8,7 @@ - + @@ -30,8 +30,7 @@ + android:windowSoftInputMode="adjustPan"> @@ -47,8 +46,7 @@ + android:label="@string/settings_name"> - diff --git a/examples/androidapp/res/values/strings.xml b/examples/androidapp/res/values/strings.xml index 95d1b68c62..231475f587 100644 --- a/examples/androidapp/res/values/strings.xml +++ b/examples/androidapp/res/values/strings.xml @@ -27,9 +27,6 @@ Connect to the room Add favorite %1$dx%2$d @ %3$d fps - The application is missing permissions. It might not work correctly. Do you want to try again? - Yes - No room_preference diff --git a/examples/androidapp/src/org/appspot/apprtc/ConnectActivity.java b/examples/androidapp/src/org/appspot/apprtc/ConnectActivity.java index 4e5df6e6fb..28add759c0 100644 --- a/examples/androidapp/src/org/appspot/apprtc/ConnectActivity.java +++ b/examples/androidapp/src/org/appspot/apprtc/ConnectActivity.java @@ -10,17 +10,12 @@ package org.appspot.apprtc; -import android.Manifest; -import android.annotation.TargetApi; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; import android.net.Uri; -import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; import android.util.Log; @@ -49,7 +44,6 @@ import org.json.JSONException; public class ConnectActivity extends Activity { private static final String TAG = "ConnectActivity"; private static final int CONNECTION_REQUEST = 1; - private static final int PERMISSION_REQUEST = 2; private static final int REMOVE_FAVORITE_INDEX = 0; private static boolean commandLineRun = false; @@ -110,7 +104,16 @@ public class ConnectActivity extends Activity { addFavoriteButton = findViewById(R.id.add_favorite_button); addFavoriteButton.setOnClickListener(addFavoriteListener); - requestPermissions(); + // If an implicit VIEW intent is launching the app, go directly to that URL. + final Intent intent = getIntent(); + if ("android.intent.action.VIEW".equals(intent.getAction()) && !commandLineRun) { + boolean loopback = intent.getBooleanExtra(CallActivity.EXTRA_LOOPBACK, false); + int runTimeMs = intent.getIntExtra(CallActivity.EXTRA_RUNTIME, 0); + boolean useValuesFromIntent = + intent.getBooleanExtra(CallActivity.EXTRA_USE_VALUES_FROM_INTENT, false); + String room = sharedPref.getString(keyprefRoom, ""); + connectToRoom(room, true, loopback, useValuesFromIntent, runTimeMs); + } } @Override @@ -207,101 +210,6 @@ public class ConnectActivity extends Activity { } } - @Override - public void onRequestPermissionsResult( - int requestCode, String[] permissions, int[] grantResults) { - if (requestCode == PERMISSION_REQUEST) { - String[] missingPermissions = getMissingPermissions(); - if (missingPermissions.length != 0) { - // User didn't grant all the permissions. Warn that the application might not work - // correctly. - new AlertDialog.Builder(this) - .setMessage(R.string.missing_permissions_try_again) - .setPositiveButton(R.string.yes, - (dialog, id) -> { - // User wants to try giving the permissions again. - dialog.cancel(); - requestPermissions(); - }) - .setNegativeButton(R.string.no, - (dialog, id) -> { - // User doesn't want to give the permissions. - dialog.cancel(); - onPermissionsGranted(); - }) - .show(); - } else { - // All permissions granted. - onPermissionsGranted(); - } - } - } - - private void onPermissionsGranted() { - // If an implicit VIEW intent is launching the app, go directly to that URL. - final Intent intent = getIntent(); - if ("android.intent.action.VIEW".equals(intent.getAction()) && !commandLineRun) { - boolean loopback = intent.getBooleanExtra(CallActivity.EXTRA_LOOPBACK, false); - int runTimeMs = intent.getIntExtra(CallActivity.EXTRA_RUNTIME, 0); - boolean useValuesFromIntent = - intent.getBooleanExtra(CallActivity.EXTRA_USE_VALUES_FROM_INTENT, false); - String room = sharedPref.getString(keyprefRoom, ""); - connectToRoom(room, true, loopback, useValuesFromIntent, runTimeMs); - } - } - - @TargetApi(Build.VERSION_CODES.M) - private void requestPermissions() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - // Dynamic permissions are not required before Android M. - onPermissionsGranted(); - return; - } - - String[] missingPermissions = getMissingPermissions(); - if (missingPermissions.length != 0) { - requestPermissions(missingPermissions, PERMISSION_REQUEST); - } else { - onPermissionsGranted(); - } - } - - @TargetApi(Build.VERSION_CODES.M) - private String[] getMissingPermissions() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - return new String[0]; - } - - PackageInfo info; - try { - info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_PERMISSIONS); - } catch (PackageManager.NameNotFoundException e) { - Log.w(TAG, "Failed to retrieve permissions."); - return new String[0]; - } - - if (info.requestedPermissions == null) { - Log.w(TAG, "No requested permissions."); - return new String[0]; - } - - ArrayList missingPermissions = new ArrayList<>(); - for (int i = 0; i < info.requestedPermissions.length; i++) { - if (Manifest.permission.CAPTURE_VIDEO_OUTPUT.equals(info.requestedPermissions[i])) { - // Screen recording permission has to be asked every time a session is started. (See - // CallActivity#startScreenCapture.) - continue; - } - - if ((info.requestedPermissionsFlags[i] & PackageInfo.REQUESTED_PERMISSION_GRANTED) == 0) { - missingPermissions.add(info.requestedPermissions[i]); - } - } - Log.d(TAG, "Missing permissions: " + missingPermissions); - - return missingPermissions.toArray(new String[missingPermissions.size()]); - } - /** * Get a value from the shared preference or from the intent, if it does not * exist the default is used.