导航菜单

页面标题

页面副标题

北京退费客服端 v1.0.0 - NotificationImageProvider.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();
                }
            }
        }
    }
}