@Override public void readPersistenceData(Parcel p) { SparseArray<VDeviceInfo> infos = mService.getDeviceInfos(); infos.clear(); int size = p.readInt(); while (size-- > 0) { int userId = p.readInt(); VDeviceInfo info = new VDeviceInfo(p); infos.put(userId, info); } }
@SuppressLint("SdCardPath") private void startIOUniformer() { ApplicationInfo info = mBoundApplication.appInfo; int userId = VUserHandle.myUserId(); String wifiMacAddressFile = deviceInfo.getWifiFile(userId).getPath(); NativeEngine.redirectDirectory("/sys/class/net/wlan0/address", wifiMacAddressFile); NativeEngine.redirectDirectory("/sys/class/net/eth0/address", wifiMacAddressFile); NativeEngine.redirectDirectory("/sys/class/net/wifi/address", wifiMacAddressFile); NativeEngine.redirectDirectory("/data/data/" + info.packageName, info.dataDir); NativeEngine.redirectDirectory("/data/user/0/" + info.packageName, info.dataDir); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { NativeEngine.redirectDirectory("/data/user_de/0/" + info.packageName, info.dataDir); } String libPath = VEnvironment.getAppLibDirectory(info.packageName).getAbsolutePath(); String userLibPath = new File(VEnvironment.getUserSystemDirectory(userId), info.packageName + "/lib").getAbsolutePath(); NativeEngine.redirectDirectory(userLibPath, libPath); NativeEngine.redirectDirectory("/data/data/" + info.packageName + "/lib/", libPath); NativeEngine.redirectDirectory("/data/user/0/" + info.packageName + "/lib/", libPath); File dataUserLib = new File(VEnvironment.getDataUserPackageDirectory(userId, info.packageName), "lib"); if (!dataUserLib.exists()) { try { Os.symlink(libPath, dataUserLib.getPath()); } catch (ErrnoException e) { VLog.w(TAG, "symlink error", e); } } setupVirtualStorage(info, userId); NativeEngine.enableIORedirect(); }
@Override public void writePersistenceData(Parcel p) { SparseArray<VDeviceInfo> infos = mService.getDeviceInfos(); int size = infos.size(); p.writeInt(size); for (int i = 0; i < size; i++) { int userId = infos.keyAt(i); VDeviceInfo info = infos.valueAt(i); p.writeInt(userId); info.writeToParcel(p, 0); } }
private VDeviceInfo generateRandomDeviceInfo() { VDeviceInfo info = new VDeviceInfo(); String value; do { value = generate10(15); info.deviceId = value; } while (mPool.deviceIds.contains(value)); do { value = generate16(16); info.androidId = value; } while (mPool.androidIds.contains(value)); do { value = generateMac(); info.wifiMac = value; } while (mPool.wifiMacs.contains(value)); do { value = generateMac(); info.bluetoothMac = value; } while (mPool.bluetoothMacs.contains(value)); do { value = generate10(20); info.iccId = value; } while (mPool.iccIds.contains(value)); info.serial = generateSerial(); addDeviceInfoToPool(info); return info; }
@Override public void writePersistenceData(Parcel p) { SparseArray<VDeviceInfo> infos = mService.getDeviceInfos(); int size = infos.size(); p.writeInt(size); for (int i = 0; i < size; i++) { int userId = infos.keyAt(i); VDeviceInfo info = infos.valueAt(i); p.writeInt(userId); info.writeToParcel(p, 0); } }
ApplicationInfo info = mBoundApplication.appInfo; int userId = VUserHandle.myUserId(); String wifiMacAddressFile = deviceInfo.getWifiFile(userId).getPath(); NativeEngine.redirectDirectory("/sys/class/net/wlan0/address", wifiMacAddressFile); NativeEngine.redirectDirectory("/sys/class/net/eth0/address", wifiMacAddressFile);
@Override public void readPersistenceData(Parcel p) { SparseArray<VDeviceInfo> infos = mService.getDeviceInfos(); infos.clear(); int size = p.readInt(); while (size-- > 0) { int userId = p.readInt(); VDeviceInfo info = new VDeviceInfo(p); infos.put(userId, info); } }
@Override public void writePersistenceData(Parcel p) { SparseArray<VDeviceInfo> infos = mService.getDeviceInfos(); int size = infos.size(); p.writeInt(size); for (int i = 0; i < size; i++) { int userId = infos.keyAt(i); VDeviceInfo info = infos.valueAt(i); p.writeInt(userId); info.writeToParcel(p, 0); } }
ApplicationInfo info = mBoundApplication.appInfo; int userId = VUserHandle.myUserId(); String wifiMacAddressFile = deviceInfo.getWifiFile(userId).getPath(); NativeEngine.redirectDirectory("/sys/class/net/wlan0/address", wifiMacAddressFile); NativeEngine.redirectDirectory("/sys/class/net/eth0/address", wifiMacAddressFile);
@Override public void readPersistenceData(Parcel p) { SparseArray<VDeviceInfo> infos = mService.getDeviceInfos(); infos.clear(); int size = p.readInt(); while (size-- > 0) { int userId = p.readInt(); VDeviceInfo info = new VDeviceInfo(p); infos.put(userId, info); } }
private VDeviceInfo generateRandomDeviceInfo() { VDeviceInfo info = new VDeviceInfo(); String value; do { value = generate10(15); info.deviceId = value; } while (mPool.deviceIds.contains(value)); do { value = generate16(16); info.androidId = value; } while (mPool.androidIds.contains(value)); do { value = generateMac(); info.wifiMac = value; } while (mPool.wifiMacs.contains(value)); do { value = generateMac(); info.bluetoothMac = value; } while (mPool.bluetoothMacs.contains(value)); do { value = generate10(20); info.iccId = value; } while (mPool.iccIds.contains(value)); info.serial = generateSerial(); addDeviceInfoToPool(info); return info; }
private VDeviceInfo generateRandomDeviceInfo() { VDeviceInfo info = new VDeviceInfo(); String value; do { value = generate10(15); info.deviceId = value; } while (mPool.deviceIds.contains(value)); do { value = generate16(16); info.androidId = value; } while (mPool.androidIds.contains(value)); do { value = generateMac(); info.wifiMac = value; } while (mPool.wifiMacs.contains(value)); do { value = generateMac(); info.bluetoothMac = value; } while (mPool.bluetoothMacs.contains(value)); do { value = generate10(20); info.iccId = value; } while (mPool.iccIds.contains(value)); info.serial = generateSerial(); addDeviceInfoToPool(info); return info; }