553 lines
21 KiB
Java
553 lines
21 KiB
Java
package com.unity3d.ads.api;
|
|
|
|
import android.content.pm.PackageInfo;
|
|
import android.content.pm.PackageManager;
|
|
import android.hardware.Sensor;
|
|
import android.util.SparseArray;
|
|
import com.ubt.jimu.base.entities.Constant;
|
|
import com.ubt.jimu.transport.model.TransportFile;
|
|
import com.unity3d.ads.device.Device;
|
|
import com.unity3d.ads.device.DeviceError;
|
|
import com.unity3d.ads.device.IVolumeChangeListener;
|
|
import com.unity3d.ads.device.VolumeChange;
|
|
import com.unity3d.ads.log.DeviceLog;
|
|
import com.unity3d.ads.metadata.MediationMetaData;
|
|
import com.unity3d.ads.properties.ClientProperties;
|
|
import com.unity3d.ads.webview.WebViewApp;
|
|
import com.unity3d.ads.webview.WebViewEventCategory;
|
|
import com.unity3d.ads.webview.bridge.WebViewCallback;
|
|
import com.unity3d.ads.webview.bridge.WebViewExposed;
|
|
import java.io.File;
|
|
import java.util.Collection;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.Locale;
|
|
import java.util.Map;
|
|
import java.util.TimeZone;
|
|
import org.json.JSONArray;
|
|
import org.json.JSONException;
|
|
import org.json.JSONObject;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public class DeviceInfo {
|
|
private static SparseArray<IVolumeChangeListener> _volumeChangeListeners;
|
|
|
|
/* renamed from: com.unity3d.ads.api.DeviceInfo$2, reason: invalid class name */
|
|
static /* synthetic */ class AnonymousClass2 {
|
|
static final /* synthetic */ int[] $SwitchMap$com$unity3d$ads$api$DeviceInfo$StorageType = new int[StorageType.values().length];
|
|
|
|
static {
|
|
try {
|
|
$SwitchMap$com$unity3d$ads$api$DeviceInfo$StorageType[StorageType.INTERNAL.ordinal()] = 1;
|
|
} catch (NoSuchFieldError unused) {
|
|
}
|
|
try {
|
|
$SwitchMap$com$unity3d$ads$api$DeviceInfo$StorageType[StorageType.EXTERNAL.ordinal()] = 2;
|
|
} catch (NoSuchFieldError unused2) {
|
|
}
|
|
}
|
|
}
|
|
|
|
public enum DeviceInfoEvent {
|
|
VOLUME_CHANGED
|
|
}
|
|
|
|
public enum StorageType {
|
|
EXTERNAL,
|
|
INTERNAL
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getAdvertisingTrackingId(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.getAdvertisingTrackingId());
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getAndroidId(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.getAndroidId());
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getApiLevel(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Integer.valueOf(Device.getApiLevel()));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getApkDigest(WebViewCallback webViewCallback) {
|
|
try {
|
|
webViewCallback.invoke(Device.getApkDigest());
|
|
} catch (Exception e) {
|
|
webViewCallback.error(DeviceError.COULDNT_GET_DIGEST, e.toString());
|
|
}
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getBatteryLevel(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Float.valueOf(Device.getBatteryLevel()));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getBatteryStatus(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Integer.valueOf(Device.getBatteryStatus()));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getBoard(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.getBoard());
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getBootloader(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.getBootloader());
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getBrand(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.getBrand());
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getBuildId(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.getBuildId());
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getBuildVersionIncremental(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.getBuildVersionIncremental());
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getCPUCount(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Long.valueOf(Device.getCPUCount()));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getCertificateFingerprint(WebViewCallback webViewCallback) {
|
|
String certificateFingerprint = Device.getCertificateFingerprint();
|
|
if (certificateFingerprint != null) {
|
|
webViewCallback.invoke(certificateFingerprint);
|
|
} else {
|
|
webViewCallback.error(DeviceError.COULDNT_GET_FINGERPRINT, new Object[0]);
|
|
}
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getConnectionType(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.isUsingWifi() ? "wifi" : Device.isActiveNetworkConnected() ? "cellular" : TransportFile.TYPE_NONE);
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getDevice(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.getDevice());
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getDeviceMaxVolume(Integer num, WebViewCallback webViewCallback) {
|
|
int streamMaxVolume = Device.getStreamMaxVolume(num.intValue());
|
|
if (streamMaxVolume > -1) {
|
|
webViewCallback.invoke(Integer.valueOf(streamMaxVolume));
|
|
return;
|
|
}
|
|
if (streamMaxVolume == -2) {
|
|
webViewCallback.error(DeviceError.AUDIOMANAGER_NULL, Integer.valueOf(streamMaxVolume));
|
|
return;
|
|
}
|
|
if (streamMaxVolume == -1) {
|
|
webViewCallback.error(DeviceError.APPLICATION_CONTEXT_NULL, Integer.valueOf(streamMaxVolume));
|
|
return;
|
|
}
|
|
DeviceLog.error("Unhandled deviceMaxVolume error: " + streamMaxVolume);
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getDeviceVolume(Integer num, WebViewCallback webViewCallback) {
|
|
int streamVolume = Device.getStreamVolume(num.intValue());
|
|
if (streamVolume > -1) {
|
|
webViewCallback.invoke(Integer.valueOf(streamVolume));
|
|
return;
|
|
}
|
|
if (streamVolume == -2) {
|
|
webViewCallback.error(DeviceError.AUDIOMANAGER_NULL, Integer.valueOf(streamVolume));
|
|
return;
|
|
}
|
|
if (streamVolume == -1) {
|
|
webViewCallback.error(DeviceError.APPLICATION_CONTEXT_NULL, Integer.valueOf(streamVolume));
|
|
return;
|
|
}
|
|
DeviceLog.error("Unhandled deviceVolume error: " + streamVolume);
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getElapsedRealtime(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Long.valueOf(Device.getElapsedRealtime()));
|
|
}
|
|
|
|
private static File getFileForStorageType(StorageType storageType) {
|
|
int i = AnonymousClass2.$SwitchMap$com$unity3d$ads$api$DeviceInfo$StorageType[storageType.ordinal()];
|
|
if (i == 1) {
|
|
return ClientProperties.getApplicationContext().getCacheDir();
|
|
}
|
|
if (i == 2) {
|
|
return ClientProperties.getApplicationContext().getExternalCacheDir();
|
|
}
|
|
DeviceLog.error("Unhandled storagetype: " + storageType);
|
|
return null;
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getFingerprint(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.getFingerprint());
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getFreeMemory(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Long.valueOf(Device.getFreeMemory()));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getFreeSpace(String str, WebViewCallback webViewCallback) {
|
|
StorageType storageTypeFromString = getStorageTypeFromString(str);
|
|
if (storageTypeFromString == null) {
|
|
webViewCallback.error(DeviceError.INVALID_STORAGETYPE, str);
|
|
return;
|
|
}
|
|
long freeSpace = Device.getFreeSpace(getFileForStorageType(storageTypeFromString));
|
|
if (freeSpace > -1) {
|
|
webViewCallback.invoke(Long.valueOf(freeSpace));
|
|
} else {
|
|
webViewCallback.error(DeviceError.COULDNT_GET_STORAGE_LOCATION, Long.valueOf(freeSpace));
|
|
}
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getGLVersion(WebViewCallback webViewCallback) {
|
|
String gLVersion = Device.getGLVersion();
|
|
if (gLVersion != null) {
|
|
webViewCallback.invoke(gLVersion);
|
|
} else {
|
|
webViewCallback.error(DeviceError.COULDNT_GET_GL_VERSION, new Object[0]);
|
|
}
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getHardware(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.getHardware());
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getHeadset(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Boolean.valueOf(Device.isWiredHeadsetOn()));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getHost(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.getHost());
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getInstalledPackages(boolean z, WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(new JSONArray((Collection) Device.getInstalledPackages(z)));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getLimitAdTrackingFlag(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Boolean.valueOf(Device.isLimitAdTrackingEnabled()));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getManufacturer(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.getManufacturer());
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getModel(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.getModel());
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getNetworkMetered(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Boolean.valueOf(Device.getNetworkMetered()));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getNetworkOperator(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.getNetworkOperator());
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getNetworkOperatorName(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.getNetworkOperatorName());
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getNetworkType(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Integer.valueOf(Device.getNetworkType()));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getOsVersion(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.getOsVersion());
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getPackageInfo(String str, WebViewCallback webViewCallback) {
|
|
if (ClientProperties.getApplicationContext() == null) {
|
|
webViewCallback.error(DeviceError.APPLICATION_CONTEXT_NULL, new Object[0]);
|
|
return;
|
|
}
|
|
PackageManager packageManager = ClientProperties.getApplicationContext().getPackageManager();
|
|
try {
|
|
PackageInfo packageInfo = packageManager.getPackageInfo(str, 0);
|
|
JSONObject jSONObject = new JSONObject();
|
|
try {
|
|
jSONObject.put("installer", packageManager.getInstallerPackageName(str));
|
|
jSONObject.put("firstInstallTime", packageInfo.firstInstallTime);
|
|
jSONObject.put("lastUpdateTime", packageInfo.lastUpdateTime);
|
|
jSONObject.put("versionCode", packageInfo.versionCode);
|
|
jSONObject.put("versionName", packageInfo.versionName);
|
|
jSONObject.put(Constant.SelectRobot.PACKAGE_NAME_KEY, packageInfo.packageName);
|
|
webViewCallback.invoke(jSONObject);
|
|
} catch (JSONException e) {
|
|
webViewCallback.error(DeviceError.JSON_ERROR, e.getMessage());
|
|
}
|
|
} catch (PackageManager.NameNotFoundException unused) {
|
|
webViewCallback.error(DeviceError.APPLICATION_INFO_NOT_AVAILABLE, str);
|
|
}
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getProcessInfo(WebViewCallback webViewCallback) {
|
|
JSONObject jSONObject = new JSONObject();
|
|
Map<String, String> processInfo = Device.getProcessInfo();
|
|
if (processInfo != null) {
|
|
try {
|
|
if (processInfo.containsKey("stat")) {
|
|
jSONObject.put("stat", processInfo.get("stat"));
|
|
}
|
|
if (processInfo.containsKey("uptime")) {
|
|
jSONObject.put("uptime", processInfo.get("uptime"));
|
|
}
|
|
} catch (Exception e) {
|
|
DeviceLog.exception("Error while constructing process info", e);
|
|
}
|
|
}
|
|
webViewCallback.invoke(jSONObject);
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getProduct(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.getProduct());
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getRingerMode(WebViewCallback webViewCallback) {
|
|
int ringerMode = Device.getRingerMode();
|
|
if (ringerMode > -1) {
|
|
webViewCallback.invoke(Integer.valueOf(ringerMode));
|
|
return;
|
|
}
|
|
if (ringerMode == -2) {
|
|
webViewCallback.error(DeviceError.AUDIOMANAGER_NULL, Integer.valueOf(ringerMode));
|
|
return;
|
|
}
|
|
if (ringerMode == -1) {
|
|
webViewCallback.error(DeviceError.APPLICATION_CONTEXT_NULL, Integer.valueOf(ringerMode));
|
|
return;
|
|
}
|
|
DeviceLog.error("Unhandled ringerMode error: " + ringerMode);
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getScreenBrightness(WebViewCallback webViewCallback) {
|
|
int screenBrightness = Device.getScreenBrightness();
|
|
if (screenBrightness > -1) {
|
|
webViewCallback.invoke(Integer.valueOf(screenBrightness));
|
|
return;
|
|
}
|
|
if (screenBrightness == -1) {
|
|
webViewCallback.error(DeviceError.APPLICATION_CONTEXT_NULL, Integer.valueOf(screenBrightness));
|
|
return;
|
|
}
|
|
DeviceLog.error("Unhandled screenBrightness error: " + screenBrightness);
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getScreenDensity(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Integer.valueOf(Device.getScreenDensity()));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getScreenHeight(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Integer.valueOf(Device.getScreenHeight()));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getScreenLayout(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Integer.valueOf(Device.getScreenLayout()));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getScreenWidth(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Integer.valueOf(Device.getScreenWidth()));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getSensorList(WebViewCallback webViewCallback) {
|
|
JSONArray jSONArray = new JSONArray();
|
|
List<Sensor> sensorList = Device.getSensorList();
|
|
if (sensorList != null) {
|
|
for (Sensor sensor : sensorList) {
|
|
JSONObject jSONObject = new JSONObject();
|
|
try {
|
|
jSONObject.put(MediationMetaData.KEY_NAME, sensor.getName());
|
|
jSONObject.put("type", sensor.getType());
|
|
jSONObject.put("vendor", sensor.getVendor());
|
|
jSONObject.put("maximumRange", sensor.getMaximumRange());
|
|
jSONObject.put("power", sensor.getPower());
|
|
jSONObject.put(MediationMetaData.KEY_VERSION, sensor.getVersion());
|
|
jSONObject.put("resolution", sensor.getResolution());
|
|
jSONObject.put("minDelay", sensor.getMinDelay());
|
|
jSONArray.put(jSONObject);
|
|
} catch (JSONException e) {
|
|
webViewCallback.error(DeviceError.JSON_ERROR, e.getMessage());
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
webViewCallback.invoke(jSONArray);
|
|
}
|
|
|
|
private static StorageType getStorageTypeFromString(String str) {
|
|
try {
|
|
return StorageType.valueOf(str);
|
|
} catch (IllegalArgumentException e) {
|
|
DeviceLog.exception("Illegal argument: " + str, e);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getSupportedAbis(WebViewCallback webViewCallback) {
|
|
JSONArray jSONArray = new JSONArray();
|
|
Iterator<String> it = Device.getSupportedAbis().iterator();
|
|
while (it.hasNext()) {
|
|
jSONArray.put(it.next());
|
|
}
|
|
webViewCallback.invoke(jSONArray);
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getSystemLanguage(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Locale.getDefault().toString());
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getSystemProperty(String str, String str2, WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.getSystemProperty(str, str2));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getTimeZone(Boolean bool, WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(TimeZone.getDefault().getDisplayName(bool.booleanValue(), 0, Locale.US));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getTimeZoneOffset(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Integer.valueOf(TimeZone.getDefault().getOffset(System.currentTimeMillis()) / 1000));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getTotalMemory(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Long.valueOf(Device.getTotalMemory()));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getTotalSpace(String str, WebViewCallback webViewCallback) {
|
|
StorageType storageTypeFromString = getStorageTypeFromString(str);
|
|
if (storageTypeFromString == null) {
|
|
webViewCallback.error(DeviceError.INVALID_STORAGETYPE, str);
|
|
return;
|
|
}
|
|
long totalSpace = Device.getTotalSpace(getFileForStorageType(storageTypeFromString));
|
|
if (totalSpace > -1) {
|
|
webViewCallback.invoke(Long.valueOf(totalSpace));
|
|
} else {
|
|
webViewCallback.error(DeviceError.COULDNT_GET_STORAGE_LOCATION, Long.valueOf(totalSpace));
|
|
}
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getUniqueEventId(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Device.getUniqueEventId());
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void getUptime(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Long.valueOf(Device.getUptime()));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void isAdbEnabled(WebViewCallback webViewCallback) {
|
|
Boolean isAdbEnabled = Device.isAdbEnabled();
|
|
if (isAdbEnabled != null) {
|
|
webViewCallback.invoke(isAdbEnabled);
|
|
} else {
|
|
webViewCallback.error(DeviceError.COULDNT_GET_ADB_STATUS, new Object[0]);
|
|
}
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void isAppInstalled(String str, WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Boolean.valueOf(Device.isAppInstalled(str)));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void isRooted(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Boolean.valueOf(Device.isRooted()));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void isUSBConnected(WebViewCallback webViewCallback) {
|
|
webViewCallback.invoke(Boolean.valueOf(Device.isUSBConnected()));
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void registerVolumeChangeListener(final Integer num, WebViewCallback webViewCallback) {
|
|
if (_volumeChangeListeners == null) {
|
|
_volumeChangeListeners = new SparseArray<>();
|
|
}
|
|
if (_volumeChangeListeners.get(num.intValue()) == null) {
|
|
IVolumeChangeListener iVolumeChangeListener = new IVolumeChangeListener() { // from class: com.unity3d.ads.api.DeviceInfo.1
|
|
private int _streamType;
|
|
|
|
{
|
|
this._streamType = num.intValue();
|
|
}
|
|
|
|
@Override // com.unity3d.ads.device.IVolumeChangeListener
|
|
public int getStreamType() {
|
|
return this._streamType;
|
|
}
|
|
|
|
@Override // com.unity3d.ads.device.IVolumeChangeListener
|
|
public void onVolumeChanged(int i) {
|
|
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.DEVICEINFO, DeviceInfoEvent.VOLUME_CHANGED, Integer.valueOf(getStreamType()), Integer.valueOf(i), Integer.valueOf(Device.getStreamMaxVolume(this._streamType)));
|
|
}
|
|
};
|
|
_volumeChangeListeners.append(num.intValue(), iVolumeChangeListener);
|
|
VolumeChange.registerListener(iVolumeChangeListener);
|
|
}
|
|
webViewCallback.invoke(new Object[0]);
|
|
}
|
|
|
|
@WebViewExposed
|
|
public static void unregisterVolumeChangeListener(Integer num, WebViewCallback webViewCallback) {
|
|
SparseArray<IVolumeChangeListener> sparseArray = _volumeChangeListeners;
|
|
if (sparseArray != null && sparseArray.get(num.intValue()) != null) {
|
|
VolumeChange.unregisterListener(_volumeChangeListeners.get(num.intValue()));
|
|
_volumeChangeListeners.remove(num.intValue());
|
|
}
|
|
webViewCallback.invoke(new Object[0]);
|
|
}
|
|
}
|