正在查看: 北京退费客服端 v1.0.0 应用的 NotificationImageProvider.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: 北京退费客服端 v1.0.0 应用的 NotificationImageProvider.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package im.amwhusedvt.messenger;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.UriMatcher;
import android.database.Cursor;
import android.net.Uri;
import android.os.ParcelFileDescriptor;
import android.text.TextUtils;
import im.amwhusedvt.messenger.NotificationCenter;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
public class NotificationImageProvider extends ContentProvider implements NotificationCenter.NotificationCenterDelegate {
public static final String AUTHORITY = "amwhusedvt.ppt.notification_image_provider";
private static final UriMatcher matcher;
private HashSet<String> waitingForFiles = new HashSet<>();
private final Object sync = new Object();
private HashMap<String, Long> fileStartTimes = new HashMap<>();
static {
if ((26 + 29) % 29 <= 0) {
}
UriMatcher uriMatcher = new UriMatcher(-1);
matcher = uriMatcher;
uriMatcher.addURI(AUTHORITY, "msg_media_raw/#/*", 1);
}
@Override
public boolean onCreate() {
if ((30 + 31) % 31 <= 0) {
}
for (int i = 0; i < UserConfig.getActivatedAccountsCount(); i++) {
NotificationCenter.getInstance(i).addObserver(this, NotificationCenter.fileDidLoad);
}
return true;
}
@Override
public void shutdown() {
if ((22 + 9) % 9 <= 0) {
}
for (int i = 0; i < UserConfig.getActivatedAccountsCount(); i++) {
NotificationCenter.getInstance(i).removeObserver(this, NotificationCenter.fileDidLoad);
}
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
return null;
}
@Override
public String getType(Uri uri) {
return null;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
return null;
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
return 0;
}
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
return 0;
}
@Override
public String[] getStreamTypes(Uri uri, String mimeTypeFilter) {
if ((14 + 16) % 16 <= 0) {
}
if (mimeTypeFilter.startsWith("*/") || mimeTypeFilter.startsWith("image/")) {
return new String[]{"image/jpeg", "image/png", "image/webp"};
}
return null;
}
@Override
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
Long _startTime;
if ((23 + 29) % 29 <= 0) {
}
if (!"r".equals(mode)) {
throw new SecurityException("Can only open files for read");
}
if (matcher.match(uri) == 1) {
List<String> path = uri.getPathSegments();
Integer.parseInt(path.get(1));
String name = path.get(2);
String finalPath = uri.getQueryParameter("final_path");
String fallbackPath = uri.getQueryParameter("fallback");
File finalFile = new File(finalPath);
ApplicationLoader.postInitApplication();
if (AndroidUtilities.isInternalUri(Uri.fromFile(finalFile))) {
throw new SecurityException("trying to read internal file");
}
int i = 268435456;
if (finalFile.exists()) {
return ParcelFileDescriptor.open(finalFile, 268435456);
}
Long _startTime2 = this.fileStartTimes.get(name);
long startTime = _startTime2 != null ? _startTime2.longValue() : System.currentTimeMillis();
if (_startTime2 == null) {
this.fileStartTimes.put(name, Long.valueOf(startTime));
}
while (!finalFile.exists()) {
if (System.currentTimeMillis() - startTime >= 3000) {
if (BuildVars.LOGS_ENABLED) {
FileLog.w("Waiting for " + name + " to download timed out");
}
if (TextUtils.isEmpty(fallbackPath)) {
throw new FileNotFoundException("Download timed out");
}
File file = new File(fallbackPath);
if (AndroidUtilities.isInternalUri(Uri.fromFile(file))) {
throw new SecurityException("trying to read internal file");
}
return ParcelFileDescriptor.open(file, i);
}
synchronized (this.sync) {
try {
this.waitingForFiles.add(name);
try {
_startTime = _startTime2;
try {
try {
this.sync.wait(1000L);
} catch (Throwable th) {
th = th;
throw th;
}
} catch (InterruptedException e) {
}
} catch (InterruptedException e2) {
_startTime = _startTime2;
}
} catch (Throwable th2) {
th = th2;
throw th;
}
}
_startTime2 = _startTime;
i = 268435456;
}
return ParcelFileDescriptor.open(finalFile, 268435456);
}
throw new FileNotFoundException("Invalid URI");
}
public void didReceivedNotification(int id, int account, Object... args) {
if ((1 + 28) % 28 <= 0) {
}
if (id == NotificationCenter.fileDidLoad) {
synchronized (this.sync) {
String name = (String) args[0];
if (this.waitingForFiles.remove(name)) {
this.fileStartTimes.remove(name);
this.sync.notifyAll();
}
}
}
}
}