Snap for 10277839 from b5b15a6689
to udc-release
Change-Id: I2deaa48719729992ce783070341c4377c4bb0b40
This commit is contained in:
@@ -10564,7 +10564,7 @@
|
|||||||
<string name="change_nfc_tag_apps_detail_switch">Allow launch on NFC scan</string>
|
<string name="change_nfc_tag_apps_detail_switch">Allow launch on NFC scan</string>
|
||||||
|
|
||||||
<!-- Special app access > Launch via NFC > Description. [CHAR LIMIT=NONE] -->
|
<!-- Special app access > Launch via NFC > Description. [CHAR LIMIT=NONE] -->
|
||||||
<string name="change_nfc_tag_apps_detail_summary">Allow this app to launch when a NFC tag is scanned.\nIf this permission is on, the app will be available as an option whenever a tag is detected.</string>
|
<string name="change_nfc_tag_apps_detail_summary">Allow this app to launch when an NFC tag is scanned.\nIf this permission is on, the app will be available as an option whenever a tag is detected.</string>
|
||||||
|
|
||||||
<!-- Title for media output settings -->
|
<!-- Title for media output settings -->
|
||||||
<string name="media_output_title">Play media to</string>
|
<string name="media_output_title">Play media to</string>
|
||||||
|
@@ -113,15 +113,27 @@ public class BlockingPrefWithSliceController extends BasePreferenceController im
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStart() {
|
public void onStart() {
|
||||||
if (mLiveData != null) {
|
if (mLiveData == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
mLiveData.observeForever(this);
|
mLiveData.observeForever(this);
|
||||||
|
} catch (SecurityException e) {
|
||||||
|
Log.w(TAG, "observeForever - no permission");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStop() {
|
public void onStop() {
|
||||||
if (mLiveData != null) {
|
if (mLiveData == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
mLiveData.removeObserver(this);
|
mLiveData.removeObserver(this);
|
||||||
|
} catch (SecurityException e) {
|
||||||
|
Log.w(TAG, "removeObserver - no permission");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -16,9 +16,14 @@
|
|||||||
|
|
||||||
package com.android.settings.language;
|
package com.android.settings.language;
|
||||||
|
|
||||||
|
import android.app.Dialog;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.pm.UserInfo;
|
||||||
|
import android.os.UserHandle;
|
||||||
|
import android.os.UserManager;
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
@@ -26,8 +31,12 @@ import androidx.preference.Preference;
|
|||||||
|
|
||||||
import com.android.internal.R;
|
import com.android.internal.R;
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
|
import com.android.settings.dashboard.profileselector.ProfileSelectDialog;
|
||||||
|
import com.android.settings.dashboard.profileselector.UserAdapter;
|
||||||
|
|
||||||
|
import java.lang.ref.WeakReference;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
/** Controller of the On-device recognition preference. */
|
/** Controller of the On-device recognition preference. */
|
||||||
@@ -37,6 +46,8 @@ public class OnDeviceRecognitionPreferenceController extends BasePreferenceContr
|
|||||||
|
|
||||||
private Optional<Intent> mIntent;
|
private Optional<Intent> mIntent;
|
||||||
|
|
||||||
|
private WeakReference<Dialog> mProfileSelectDialog = new WeakReference<>(null);
|
||||||
|
|
||||||
public OnDeviceRecognitionPreferenceController(Context context, String preferenceKey) {
|
public OnDeviceRecognitionPreferenceController(Context context, String preferenceKey) {
|
||||||
super(context, preferenceKey);
|
super(context, preferenceKey);
|
||||||
}
|
}
|
||||||
@@ -59,6 +70,48 @@ public class OnDeviceRecognitionPreferenceController extends BasePreferenceContr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean handlePreferenceTreeClick(Preference preference) {
|
||||||
|
if (!TextUtils.equals(preference.getKey(), getPreferenceKey())) {
|
||||||
|
return super.handlePreferenceTreeClick(preference);
|
||||||
|
}
|
||||||
|
show(preference);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void show(Preference preference) {
|
||||||
|
final List<UserHandle> userHandles = new ArrayList<>();
|
||||||
|
for (UserInfo userInfo : UserManager.get(mContext).getUsers()) {
|
||||||
|
userHandles.add(userInfo.getUserHandle());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only a single profile is installed. Proceed with its settings.
|
||||||
|
if (userHandles.size() == 1) {
|
||||||
|
mContext.startActivityAsUser(preference.getIntent(), userHandles.get(0));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Multiple profiles are installed. Show a dialog to the user to pick one to proceed with.
|
||||||
|
createAndShowProfileSelectDialog(preference.getIntent(), userHandles);
|
||||||
|
}
|
||||||
|
|
||||||
|
private UserAdapter.OnClickListener createProfileDialogClickCallback(
|
||||||
|
Intent intent, List<UserHandle> userHandles) {
|
||||||
|
return (int position) -> {
|
||||||
|
mContext.startActivityAsUser(intent, userHandles.get(position));
|
||||||
|
if (mProfileSelectDialog.get() != null) {
|
||||||
|
mProfileSelectDialog.get().dismiss();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createAndShowProfileSelectDialog(Intent intent, List<UserHandle> userHandles) {
|
||||||
|
Dialog profileSelectDialog = ProfileSelectDialog.createDialog(
|
||||||
|
mContext, userHandles, createProfileDialogClickCallback(intent, userHandles));
|
||||||
|
mProfileSelectDialog = new WeakReference<>(profileSelectDialog);
|
||||||
|
profileSelectDialog.show();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an {@link Intent} for the activity in the default on-device recognizer service if
|
* Create an {@link Intent} for the activity in the default on-device recognizer service if
|
||||||
* there is a properly defined speech recognition xml meta-data for that service.
|
* there is a properly defined speech recognition xml meta-data for that service.
|
||||||
|
@@ -44,7 +44,6 @@ public class SlicePreferenceController extends BasePreferenceController implemen
|
|||||||
LiveData<Slice> mLiveData;
|
LiveData<Slice> mLiveData;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
SlicePreference mSlicePreference;
|
SlicePreference mSlicePreference;
|
||||||
private boolean mIsObservering = false;
|
|
||||||
private Uri mUri;
|
private Uri mUri;
|
||||||
|
|
||||||
public SlicePreferenceController(Context context, String preferenceKey) {
|
public SlicePreferenceController(Context context, String preferenceKey) {
|
||||||
@@ -74,9 +73,14 @@ public class SlicePreferenceController extends BasePreferenceController implemen
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStart() {
|
public void onStart() {
|
||||||
if (mLiveData != null && !mIsObservering) {
|
if (mLiveData == null) {
|
||||||
mIsObservering = true;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
mLiveData.observeForever(this);
|
mLiveData.observeForever(this);
|
||||||
|
} catch (SecurityException e) {
|
||||||
|
Log.w(TAG, "observeForever - no permission");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -91,9 +95,14 @@ public class SlicePreferenceController extends BasePreferenceController implemen
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void removeLiveDataObserver() {
|
private void removeLiveDataObserver() {
|
||||||
if (mLiveData != null && mIsObservering && mLiveData.hasActiveObservers()) {
|
if (mLiveData == null) {
|
||||||
mIsObservering = false;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
mLiveData.removeObserver(this);
|
mLiveData.removeObserver(this);
|
||||||
|
} catch (SecurityException e) {
|
||||||
|
Log.w(TAG, "removeLiveDataObserver - no permission");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user