public class com.android.mtp.MtpDocumentsProvider extends android.provider.DocumentsProvider
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.android.mtp.MtpDocumentsProvider
super_class: android.provider.DocumentsProvider
{
static final java.lang.String AUTHORITY;
descriptor: Ljava/lang/String;
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: "com.android.mtp.documents"
static final java.lang.String TAG;
descriptor: Ljava/lang/String;
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: "MtpDocumentsProvider"
static final java.lang.String[] DEFAULT_ROOT_PROJECTION;
descriptor: [Ljava/lang/String;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final java.lang.String[] DEFAULT_DOCUMENT_PROJECTION;
descriptor: [Ljava/lang/String;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static final boolean DEBUG;
descriptor: Z
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: 0
private final java.lang.Object mDeviceListLock;
descriptor: Ljava/lang/Object;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private static com.android.mtp.MtpDocumentsProvider sSingleton;
descriptor: Lcom/android/mtp/MtpDocumentsProvider;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private com.android.mtp.MtpManager mMtpManager;
descriptor: Lcom/android/mtp/MtpManager;
flags: (0x0002) ACC_PRIVATE
private android.content.ContentResolver mResolver;
descriptor: Landroid/content/ContentResolver;
flags: (0x0002) ACC_PRIVATE
private java.util.Map<java.lang.Integer, com.android.mtp.MtpDocumentsProvider$DeviceToolkit> mDeviceToolkits;
descriptor: Ljava/util/Map;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/Map<Ljava/lang/Integer;Lcom/android/mtp/MtpDocumentsProvider$DeviceToolkit;>;
RuntimeInvisibleAnnotations:
com.android.internal.annotations.GuardedBy(value = "mDeviceListLock")
private com.android.mtp.RootScanner mRootScanner;
descriptor: Lcom/android/mtp/RootScanner;
flags: (0x0002) ACC_PRIVATE
private android.content.res.Resources mResources;
descriptor: Landroid/content/res/Resources;
flags: (0x0002) ACC_PRIVATE
private com.android.mtp.MtpDatabase mDatabase;
descriptor: Lcom/android/mtp/MtpDatabase;
flags: (0x0002) ACC_PRIVATE
private com.android.mtp.ServiceIntentSender mIntentSender;
descriptor: Lcom/android/mtp/ServiceIntentSender;
flags: (0x0002) ACC_PRIVATE
private android.content.Context mContext;
descriptor: Landroid/content/Context;
flags: (0x0002) ACC_PRIVATE
private android.os.storage.StorageManager mStorageManager;
descriptor: Landroid/os/storage/StorageManager;
flags: (0x0002) ACC_PRIVATE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: bipush 6
anewarray java.lang.String
dup
iconst_0
1: ldc "root_id"
aastore
dup
iconst_1
ldc "flags"
aastore
dup
iconst_2
ldc "icon"
aastore
dup
iconst_3
2: ldc "title"
aastore
dup
iconst_4
ldc "document_id"
aastore
dup
iconst_5
3: ldc "available_bytes"
aastore
4: putstatic com.android.mtp.MtpDocumentsProvider.DEFAULT_ROOT_PROJECTION:[Ljava/lang/String;
5: bipush 6
anewarray java.lang.String
dup
iconst_0
6: ldc "document_id"
aastore
dup
iconst_1
ldc "mime_type"
aastore
dup
iconst_2
7: ldc "_display_name"
aastore
dup
iconst_3
ldc "last_modified"
aastore
dup
iconst_4
8: ldc "flags"
aastore
dup
iconst_5
ldc "_size"
aastore
9: putstatic com.android.mtp.MtpDocumentsProvider.DEFAULT_DOCUMENT_PROJECTION:[Ljava/lang/String;
10: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokespecial android.provider.DocumentsProvider.<init>:()V
1: aload 0
new java.lang.Object
dup
invokespecial java.lang.Object.<init>:()V
putfield com.android.mtp.MtpDocumentsProvider.mDeviceListLock:Ljava/lang/Object;
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/android/mtp/MtpDocumentsProvider;
static com.android.mtp.MtpDocumentsProvider getInstance();
descriptor: ()Lcom/android/mtp/MtpDocumentsProvider;
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic com.android.mtp.MtpDocumentsProvider.sSingleton:Lcom/android/mtp/MtpDocumentsProvider;
areturn
LocalVariableTable:
Start End Slot Name Signature
public boolean onCreate();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=6, args_size=1
start local 0 0: aload 0
putstatic com.android.mtp.MtpDocumentsProvider.sSingleton:Lcom/android/mtp/MtpDocumentsProvider;
1: aload 0
aload 0
invokevirtual com.android.mtp.MtpDocumentsProvider.getContext:()Landroid/content/Context;
putfield com.android.mtp.MtpDocumentsProvider.mContext:Landroid/content/Context;
2: aload 0
aload 0
invokevirtual com.android.mtp.MtpDocumentsProvider.getContext:()Landroid/content/Context;
invokevirtual android.content.Context.getResources:()Landroid/content/res/Resources;
putfield com.android.mtp.MtpDocumentsProvider.mResources:Landroid/content/res/Resources;
3: aload 0
new com.android.mtp.MtpManager
dup
aload 0
invokevirtual com.android.mtp.MtpDocumentsProvider.getContext:()Landroid/content/Context;
invokespecial com.android.mtp.MtpManager.<init>:(Landroid/content/Context;)V
putfield com.android.mtp.MtpDocumentsProvider.mMtpManager:Lcom/android/mtp/MtpManager;
4: aload 0
aload 0
invokevirtual com.android.mtp.MtpDocumentsProvider.getContext:()Landroid/content/Context;
invokevirtual android.content.Context.getContentResolver:()Landroid/content/ContentResolver;
putfield com.android.mtp.MtpDocumentsProvider.mResolver:Landroid/content/ContentResolver;
5: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield com.android.mtp.MtpDocumentsProvider.mDeviceToolkits:Ljava/util/Map;
6: aload 0
new com.android.mtp.MtpDatabase
dup
aload 0
invokevirtual com.android.mtp.MtpDocumentsProvider.getContext:()Landroid/content/Context;
iconst_0
invokespecial com.android.mtp.MtpDatabase.<init>:(Landroid/content/Context;I)V
putfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
7: aload 0
new com.android.mtp.RootScanner
dup
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mResolver:Landroid/content/ContentResolver;
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mMtpManager:Lcom/android/mtp/MtpManager;
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
invokespecial com.android.mtp.RootScanner.<init>:(Landroid/content/ContentResolver;Lcom/android/mtp/MtpManager;Lcom/android/mtp/MtpDatabase;)V
putfield com.android.mtp.MtpDocumentsProvider.mRootScanner:Lcom/android/mtp/RootScanner;
8: aload 0
new com.android.mtp.ServiceIntentSender
dup
aload 0
invokevirtual com.android.mtp.MtpDocumentsProvider.getContext:()Landroid/content/Context;
invokespecial com.android.mtp.ServiceIntentSender.<init>:(Landroid/content/Context;)V
putfield com.android.mtp.MtpDocumentsProvider.mIntentSender:Lcom/android/mtp/ServiceIntentSender;
9: aload 0
aload 0
invokevirtual com.android.mtp.MtpDocumentsProvider.getContext:()Landroid/content/Context;
ldc Landroid/os/storage/StorageManager;
invokevirtual android.content.Context.getSystemService:(Ljava/lang/Class;)Ljava/lang/Object;
checkcast android.os.storage.StorageManager
putfield com.android.mtp.MtpDocumentsProvider.mStorageManager:Landroid/os/storage/StorageManager;
10: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mResolver:Landroid/content/ContentResolver;
ldc "boot_count"
iconst_m1
invokestatic android.provider.Settings$Global.getInt:(Landroid/content/ContentResolver;Ljava/lang/String;I)I
istore 1
start local 1 11: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
invokevirtual com.android.mtp.MtpDatabase.getLastBootCount:()I
istore 2
start local 2 12: iload 1
iconst_m1
if_icmpeq 27
iload 1
iload 2
if_icmpeq 27
13: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
iload 1
invokevirtual com.android.mtp.MtpDatabase.setLastBootCount:(I)V
14: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mResolver:Landroid/content/ContentResolver;
invokevirtual android.content.ContentResolver.getOutgoingPersistedUriPermissions:()Ljava/util/List;
15: astore 3
start local 3 16: aload 3
invokeinterface java.util.List.size:()I
anewarray android.net.Uri
astore 4
start local 4 17: iconst_0
istore 5
start local 5 18: goto 21
19: StackMap locals: com.android.mtp.MtpDocumentsProvider int int java.util.List android.net.Uri[] int
StackMap stack:
aload 4
iload 5
aload 3
iload 5
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast android.content.UriPermission
invokevirtual android.content.UriPermission.getUri:()Landroid/net/Uri;
aastore
20: iinc 5 1
StackMap locals:
StackMap stack:
21: iload 5
aload 3
invokeinterface java.util.List.size:()I
if_icmplt 19
end local 5 22: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
aload 4
invokevirtual com.android.mtp.MtpDatabase.cleanDatabase:([Landroid/net/Uri;)V
end local 4 end local 3 end local 2 end local 1 23: goto 27
StackMap locals: com.android.mtp.MtpDocumentsProvider
StackMap stack: android.database.sqlite.SQLiteDiskIOException
24: astore 1
start local 1 25: ldc "MtpDocumentsProvider"
ldc "Failed to clean database."
aload 1
invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
pop
26: iconst_0
ireturn
end local 1 27: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.android.mtp.MtpDocumentsProvider.resume:()V
28: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 29 0 this Lcom/android/mtp/MtpDocumentsProvider;
11 23 1 bootCount I
12 23 2 lastBootCount I
16 23 3 permissions Ljava/util/List<Landroid/content/UriPermission;>;
17 23 4 uris [Landroid/net/Uri;
18 22 5 i I
25 27 1 error Landroid/database/sqlite/SQLiteDiskIOException;
Exception table:
from to target type
10 23 24 Class android.database.sqlite.SQLiteDiskIOException
boolean onCreateForTesting(android.content.Context, android.content.res.Resources, com.android.mtp.MtpManager, android.content.ContentResolver, com.android.mtp.MtpDatabase, android.os.storage.StorageManager, com.android.mtp.ServiceIntentSender);
descriptor: (Landroid/content/Context;Landroid/content/res/Resources;Lcom/android/mtp/MtpManager;Landroid/content/ContentResolver;Lcom/android/mtp/MtpDatabase;Landroid/os/storage/StorageManager;Lcom/android/mtp/ServiceIntentSender;)Z
flags: (0x0000)
Code:
stack=6, locals=8, args_size=8
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 0: aload 0
aload 1
putfield com.android.mtp.MtpDocumentsProvider.mContext:Landroid/content/Context;
1: aload 0
aload 2
putfield com.android.mtp.MtpDocumentsProvider.mResources:Landroid/content/res/Resources;
2: aload 0
aload 3
putfield com.android.mtp.MtpDocumentsProvider.mMtpManager:Lcom/android/mtp/MtpManager;
3: aload 0
aload 4
putfield com.android.mtp.MtpDocumentsProvider.mResolver:Landroid/content/ContentResolver;
4: aload 0
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
putfield com.android.mtp.MtpDocumentsProvider.mDeviceToolkits:Ljava/util/Map;
5: aload 0
aload 5
putfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
6: aload 0
new com.android.mtp.RootScanner
dup
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mResolver:Landroid/content/ContentResolver;
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mMtpManager:Lcom/android/mtp/MtpManager;
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
invokespecial com.android.mtp.RootScanner.<init>:(Landroid/content/ContentResolver;Lcom/android/mtp/MtpManager;Lcom/android/mtp/MtpDatabase;)V
putfield com.android.mtp.MtpDocumentsProvider.mRootScanner:Lcom/android/mtp/RootScanner;
7: aload 0
aload 7
putfield com.android.mtp.MtpDocumentsProvider.mIntentSender:Lcom/android/mtp/ServiceIntentSender;
8: aload 0
aload 6
putfield com.android.mtp.MtpDocumentsProvider.mStorageManager:Landroid/os/storage/StorageManager;
9: aload 0
invokevirtual com.android.mtp.MtpDocumentsProvider.resume:()V
10: iconst_1
ireturn
end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/android/mtp/MtpDocumentsProvider;
0 11 1 context Landroid/content/Context;
0 11 2 resources Landroid/content/res/Resources;
0 11 3 mtpManager Lcom/android/mtp/MtpManager;
0 11 4 resolver Landroid/content/ContentResolver;
0 11 5 database Lcom/android/mtp/MtpDatabase;
0 11 6 storageManager Landroid/os/storage/StorageManager;
0 11 7 intentSender Lcom/android/mtp/ServiceIntentSender;
RuntimeInvisibleAnnotations:
com.android.internal.annotations.VisibleForTesting()
RuntimeInvisibleTypeAnnotations:
METHOD_RETURN
com.android.internal.annotations.VisibleForTesting()
MethodParameters:
Name Flags
context
resources
mtpManager
resolver
database
storageManager
intentSender
public android.database.Cursor queryRoots(java.lang.String[]);
descriptor: ([Ljava/lang/String;)Landroid/database/Cursor;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 2
1: getstatic com.android.mtp.MtpDocumentsProvider.DEFAULT_ROOT_PROJECTION:[Ljava/lang/String;
astore 1
2: StackMap locals:
StackMap stack:
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mResources:Landroid/content/res/Resources;
aload 1
invokevirtual com.android.mtp.MtpDatabase.queryRoots:(Landroid/content/res/Resources;[Ljava/lang/String;)Landroid/database/Cursor;
astore 2
start local 2 3: aload 2
4: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mResolver:Landroid/content/ContentResolver;
ldc "com.android.mtp.documents"
invokestatic android.provider.DocumentsContract.buildRootsUri:(Ljava/lang/String;)Landroid/net/Uri;
5: invokeinterface android.database.Cursor.setNotificationUri:(Landroid/content/ContentResolver;Landroid/net/Uri;)V
6: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/android/mtp/MtpDocumentsProvider;
0 7 1 projection [Ljava/lang/String;
3 7 2 cursor Landroid/database/Cursor;
Exceptions:
throws java.io.FileNotFoundException
MethodParameters:
Name Flags
projection
public android.database.Cursor queryDocument(java.lang.String, java.lang.String[]);
descriptor: (Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 0: new java.lang.Error
dup
ldc "Unresolved compilation problem: \n\tR cannot be resolved to a variable\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/android/mtp/MtpDocumentsProvider;
Exceptions:
throws java.io.FileNotFoundException
MethodParameters:
Name Flags
documentId
projection
public android.database.Cursor queryChildDocuments(java.lang.String, java.lang.String[], java.lang.String);
descriptor: (Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=4
start local 0 0: new java.lang.Error
dup
ldc "Unresolved compilation problems: \n\tR cannot be resolved to a variable\n\tR cannot be resolved to a variable\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/android/mtp/MtpDocumentsProvider;
Exceptions:
throws java.io.FileNotFoundException
MethodParameters:
Name Flags
parentDocumentId
projection
sortOrder
public android.os.ParcelFileDescriptor openDocument(java.lang.String, java.lang.String, android.os.CancellationSignal);
descriptor: (Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/os/ParcelFileDescriptor;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
aload 1
invokevirtual com.android.mtp.MtpDatabase.createIdentifier:(Ljava/lang/String;)Lcom/android/mtp/Identifier;
astore 4
start local 4 1: aload 0
aload 4
getfield com.android.mtp.Identifier.mDeviceId:I
invokevirtual com.android.mtp.MtpDocumentsProvider.openDevice:(I)V
2: aload 0
aload 4
getfield com.android.mtp.Identifier.mDeviceId:I
invokevirtual com.android.mtp.MtpDocumentsProvider.getDeviceToolkit:(I)Lcom/android/mtp/MtpDocumentsProvider$DeviceToolkit;
getfield com.android.mtp.MtpDocumentsProvider$DeviceToolkit.mDeviceRecord:Lcom/android/mtp/MtpDeviceRecord;
astore 5
start local 5 3: aload 2
invokestatic android.os.ParcelFileDescriptor.parseMode:(Ljava/lang/String;)I
ldc -134217729
iand
4: istore 6
start local 6 5: iload 6
ldc 268435456
iand
ifeq 20
6: aload 0
aload 1
invokevirtual com.android.mtp.MtpDocumentsProvider.getFileSize:(Ljava/lang/String;)J
lstore 7
start local 7 7: goto 10
end local 7 StackMap locals: com.android.mtp.MtpDocumentsProvider java.lang.String java.lang.String android.os.CancellationSignal com.android.mtp.Identifier com.android.mtp.MtpDeviceRecord int
StackMap stack: java.lang.UnsupportedOperationException
8: pop
9: ldc -1
lstore 7
start local 7 10: StackMap locals: long
StackMap stack:
aload 5
getfield com.android.mtp.MtpDeviceRecord.operationsSupported:[I
lload 7
11: invokestatic com.android.mtp.MtpDeviceRecord.isPartialReadSupported:([IJ)Z
12: ifeq 18
13: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mStorageManager:Landroid/os/storage/StorageManager;
14: iload 6
15: new com.android.mtp.MtpDocumentsProvider$MtpProxyFileDescriptorCallback
dup
aload 0
aload 1
invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
invokespecial com.android.mtp.MtpDocumentsProvider$MtpProxyFileDescriptorCallback.<init>:(Lcom/android/mtp/MtpDocumentsProvider;I)V
16: invokevirtual android.os.storage.StorageManager.openProxyFileDescriptor:(ILandroid/os/ProxyFileDescriptorCallback;)Landroid/os/ParcelFileDescriptor;
17: areturn
18: StackMap locals:
StackMap stack:
aload 0
aload 4
invokevirtual com.android.mtp.MtpDocumentsProvider.getPipeManager:(Lcom/android/mtp/Identifier;)Lcom/android/mtp/PipeManager;
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mMtpManager:Lcom/android/mtp/MtpManager;
aload 4
invokevirtual com.android.mtp.PipeManager.readDocument:(Lcom/android/mtp/MtpManager;Lcom/android/mtp/Identifier;)Landroid/os/ParcelFileDescriptor;
19: areturn
end local 7 20: StackMap locals:
StackMap stack:
iload 6
ldc 536870912
iand
ifeq 30
21: aload 5
getfield com.android.mtp.MtpDeviceRecord.operationsSupported:[I
invokestatic com.android.mtp.MtpDeviceRecord.isWritingSupported:([I)Z
ifeq 27
22: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mStorageManager:Landroid/os/storage/StorageManager;
23: iload 6
24: new com.android.mtp.MtpDocumentsProvider$MtpProxyFileDescriptorCallback
dup
aload 0
aload 1
invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
invokespecial com.android.mtp.MtpDocumentsProvider$MtpProxyFileDescriptorCallback.<init>:(Lcom/android/mtp/MtpDocumentsProvider;I)V
25: invokevirtual android.os.storage.StorageManager.openProxyFileDescriptor:(ILandroid/os/ProxyFileDescriptorCallback;)Landroid/os/ParcelFileDescriptor;
26: areturn
27: StackMap locals:
StackMap stack:
new java.lang.UnsupportedOperationException
dup
28: ldc "The device does not support writing operation."
29: invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
30: StackMap locals:
StackMap stack:
new java.lang.UnsupportedOperationException
dup
ldc "The provider does not support 'rw' mode."
invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
end local 6 end local 5 31: StackMap locals: com.android.mtp.MtpDocumentsProvider java.lang.String java.lang.String android.os.CancellationSignal com.android.mtp.Identifier
StackMap stack: java.lang.Exception
astore 5
start local 5 32: ldc "MtpDocumentsProvider"
ldc "openDocument"
aload 5
invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
pop
33: aload 5
athrow
end local 5 34: StackMap locals:
StackMap stack: java.io.IOException
astore 5
start local 5 35: ldc "MtpDocumentsProvider"
ldc "openDocument"
aload 5
invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
pop
36: new java.lang.IllegalStateException
dup
aload 5
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 37 0 this Lcom/android/mtp/MtpDocumentsProvider;
0 37 1 documentId Ljava/lang/String;
0 37 2 mode Ljava/lang/String;
0 37 3 signal Landroid/os/CancellationSignal;
1 37 4 identifier Lcom/android/mtp/Identifier;
3 31 5 device Lcom/android/mtp/MtpDeviceRecord;
5 31 6 modeFlag I
7 8 7 fileSize J
10 20 7 fileSize J
32 34 5 error Ljava/lang/Exception;
35 37 5 error Ljava/io/IOException;
Exception table:
from to target type
6 7 8 Class java.lang.UnsupportedOperationException
1 17 31 Class java.io.FileNotFoundException
18 19 31 Class java.io.FileNotFoundException
20 26 31 Class java.io.FileNotFoundException
27 31 31 Class java.io.FileNotFoundException
1 17 31 Class java.lang.RuntimeException
18 19 31 Class java.lang.RuntimeException
20 26 31 Class java.lang.RuntimeException
27 31 31 Class java.lang.RuntimeException
1 17 34 Class java.io.IOException
18 19 34 Class java.io.IOException
20 26 34 Class java.io.IOException
27 31 34 Class java.io.IOException
Exceptions:
throws java.io.FileNotFoundException
MethodParameters:
Name Flags
documentId
mode
signal
public android.content.res.AssetFileDescriptor openDocumentThumbnail(java.lang.String, android.graphics.Point, android.os.CancellationSignal);
descriptor: (Ljava/lang/String;Landroid/graphics/Point;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
aload 1
invokevirtual com.android.mtp.MtpDatabase.createIdentifier:(Ljava/lang/String;)Lcom/android/mtp/Identifier;
astore 4
start local 4 1: aload 0
aload 4
getfield com.android.mtp.Identifier.mDeviceId:I
invokevirtual com.android.mtp.MtpDocumentsProvider.openDevice:(I)V
2: new android.content.res.AssetFileDescriptor
dup
3: aload 0
aload 4
invokevirtual com.android.mtp.MtpDocumentsProvider.getPipeManager:(Lcom/android/mtp/Identifier;)Lcom/android/mtp/PipeManager;
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mMtpManager:Lcom/android/mtp/MtpManager;
aload 4
invokevirtual com.android.mtp.PipeManager.readThumbnail:(Lcom/android/mtp/MtpManager;Lcom/android/mtp/Identifier;)Landroid/os/ParcelFileDescriptor;
4: lconst_0
5: ldc -1
6: invokespecial android.content.res.AssetFileDescriptor.<init>:(Landroid/os/ParcelFileDescriptor;JJ)V
7: areturn
8: StackMap locals: com.android.mtp.MtpDocumentsProvider java.lang.String android.graphics.Point android.os.CancellationSignal com.android.mtp.Identifier
StackMap stack: java.io.IOException
astore 5
start local 5 9: ldc "MtpDocumentsProvider"
ldc "openDocumentThumbnail"
aload 5
invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
pop
10: new java.io.FileNotFoundException
dup
aload 5
invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
invokespecial java.io.FileNotFoundException.<init>:(Ljava/lang/String;)V
athrow
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/android/mtp/MtpDocumentsProvider;
0 11 1 documentId Ljava/lang/String;
0 11 2 sizeHint Landroid/graphics/Point;
0 11 3 signal Landroid/os/CancellationSignal;
1 11 4 identifier Lcom/android/mtp/Identifier;
9 11 5 error Ljava/io/IOException;
Exception table:
from to target type
1 7 8 Class java.io.IOException
Exceptions:
throws java.io.FileNotFoundException
MethodParameters:
Name Flags
documentId
sizeHint
signal
public void deleteDocument(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
aload 1
invokevirtual com.android.mtp.MtpDatabase.createIdentifier:(Ljava/lang/String;)Lcom/android/mtp/Identifier;
astore 2
start local 2 1: aload 0
aload 2
getfield com.android.mtp.Identifier.mDeviceId:I
invokevirtual com.android.mtp.MtpDocumentsProvider.openDevice:(I)V
2: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
aload 1
invokevirtual com.android.mtp.MtpDatabase.getParentIdentifier:(Ljava/lang/String;)Lcom/android/mtp/Identifier;
astore 3
start local 3 3: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mMtpManager:Lcom/android/mtp/MtpManager;
aload 2
getfield com.android.mtp.Identifier.mDeviceId:I
aload 2
getfield com.android.mtp.Identifier.mObjectHandle:I
invokevirtual com.android.mtp.MtpManager.deleteDocument:(II)V
4: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
aload 1
invokevirtual com.android.mtp.MtpDatabase.deleteDocument:(Ljava/lang/String;)V
5: aload 0
aload 3
invokevirtual com.android.mtp.MtpDocumentsProvider.getDocumentLoader:(Lcom/android/mtp/Identifier;)Lcom/android/mtp/DocumentLoader;
aload 3
invokevirtual com.android.mtp.DocumentLoader.cancelTask:(Lcom/android/mtp/Identifier;)V
6: aload 0
aload 3
getfield com.android.mtp.Identifier.mDocumentId:Ljava/lang/String;
invokevirtual com.android.mtp.MtpDocumentsProvider.notifyChildDocumentsChange:(Ljava/lang/String;)V
7: aload 3
getfield com.android.mtp.Identifier.mDocumentType:I
iconst_1
if_icmpne 16
8: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
9: aload 3
getfield com.android.mtp.Identifier.mDocumentId:Ljava/lang/String;
10: invokevirtual com.android.mtp.MtpDatabase.getParentIdentifier:(Ljava/lang/String;)Lcom/android/mtp/Identifier;
astore 4
start local 4 11: aload 0
aload 4
getfield com.android.mtp.Identifier.mDocumentId:Ljava/lang/String;
invokevirtual com.android.mtp.MtpDocumentsProvider.notifyChildDocumentsChange:(Ljava/lang/String;)V
end local 4 end local 3 end local 2 12: goto 16
StackMap locals:
StackMap stack: java.io.IOException
13: astore 2
start local 2 14: ldc "MtpDocumentsProvider"
ldc "deleteDocument"
aload 2
invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
pop
15: new java.io.FileNotFoundException
dup
aload 2
invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
invokespecial java.io.FileNotFoundException.<init>:(Ljava/lang/String;)V
athrow
end local 2 16: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lcom/android/mtp/MtpDocumentsProvider;
0 17 1 documentId Ljava/lang/String;
1 12 2 identifier Lcom/android/mtp/Identifier;
3 12 3 parentIdentifier Lcom/android/mtp/Identifier;
11 12 4 deviceIdentifier Lcom/android/mtp/Identifier;
14 16 2 error Ljava/io/IOException;
Exception table:
from to target type
0 12 13 Class java.io.IOException
Exceptions:
throws java.io.FileNotFoundException
MethodParameters:
Name Flags
documentId
public void onTrimMemory(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDeviceListLock:Ljava/lang/Object;
dup
astore 2
monitorenter
1: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDeviceToolkits:Ljava/util/Map;
invokeinterface java.util.Map.values:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 4
goto 4
StackMap locals: com.android.mtp.MtpDocumentsProvider int java.lang.Object top java.util.Iterator
StackMap stack:
2: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.android.mtp.MtpDocumentsProvider$DeviceToolkit
astore 3
start local 3 3: aload 3
getfield com.android.mtp.MtpDocumentsProvider$DeviceToolkit.mDocumentLoader:Lcom/android/mtp/DocumentLoader;
invokevirtual com.android.mtp.DocumentLoader.clearCompletedTasks:()V
end local 3 4: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: aload 2
monitorexit
6: goto 9
StackMap locals: com.android.mtp.MtpDocumentsProvider int java.lang.Object
StackMap stack: java.lang.Throwable
7: aload 2
monitorexit
8: athrow
9: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lcom/android/mtp/MtpDocumentsProvider;
0 10 1 level I
3 4 3 toolkit Lcom/android/mtp/MtpDocumentsProvider$DeviceToolkit;
Exception table:
from to target type
1 6 7 any
7 8 7 any
MethodParameters:
Name Flags
level
public java.lang.String createDocument(java.lang.String, java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=19, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
aload 1
invokevirtual com.android.mtp.MtpDatabase.createIdentifier:(Ljava/lang/String;)Lcom/android/mtp/Identifier;
astore 4
start local 4 1: aload 0
aload 4
getfield com.android.mtp.Identifier.mDeviceId:I
invokevirtual com.android.mtp.MtpDocumentsProvider.openDevice:(I)V
2: aload 0
aload 4
getfield com.android.mtp.Identifier.mDeviceId:I
invokevirtual com.android.mtp.MtpDocumentsProvider.getDeviceToolkit:(I)Lcom/android/mtp/MtpDocumentsProvider$DeviceToolkit;
getfield com.android.mtp.MtpDocumentsProvider$DeviceToolkit.mDeviceRecord:Lcom/android/mtp/MtpDeviceRecord;
astore 5
start local 5 3: aload 5
getfield com.android.mtp.MtpDeviceRecord.operationsSupported:[I
invokestatic com.android.mtp.MtpDeviceRecord.isWritingSupported:([I)Z
ifne 7
4: new java.lang.UnsupportedOperationException
dup
5: ldc "Writing operation is not supported by the device."
6: invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals: com.android.mtp.Identifier com.android.mtp.MtpDeviceRecord
StackMap stack:
aload 4
getfield com.android.mtp.Identifier.mDocumentType:I
tableswitch { // 0 - 2
0: 8
1: 19
2: 22
default: 25
}
8: StackMap locals:
StackMap stack:
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
aload 4
getfield com.android.mtp.Identifier.mDocumentId:Ljava/lang/String;
invokevirtual com.android.mtp.MtpDatabase.getStorageDocumentIds:(Ljava/lang/String;)[Ljava/lang/String;
9: astore 9
start local 9 10: aload 9
arraylength
iconst_1
if_icmpne 16
11: aload 0
aload 9
iconst_0
aaload
aload 2
aload 3
invokevirtual com.android.mtp.MtpDocumentsProvider.createDocument:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
12: astore 10
start local 10 13: aload 0
aload 1
invokevirtual com.android.mtp.MtpDocumentsProvider.notifyChildDocumentsChange:(Ljava/lang/String;)V
14: aload 10
15: areturn
end local 10 16: StackMap locals: com.android.mtp.MtpDocumentsProvider java.lang.String java.lang.String java.lang.String com.android.mtp.Identifier com.android.mtp.MtpDeviceRecord top top top java.lang.String[]
StackMap stack:
new java.lang.UnsupportedOperationException
dup
17: ldc "Cannot create a file under the device."
18: invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
end local 9 19: StackMap locals: com.android.mtp.MtpDocumentsProvider java.lang.String java.lang.String java.lang.String com.android.mtp.Identifier com.android.mtp.MtpDeviceRecord
StackMap stack:
aload 4
getfield com.android.mtp.Identifier.mStorageId:I
istore 8
start local 8 20: iconst_m1
istore 7
start local 7 21: goto 26
end local 8 end local 7 22: StackMap locals:
StackMap stack:
aload 4
getfield com.android.mtp.Identifier.mStorageId:I
istore 8
start local 8 23: aload 4
getfield com.android.mtp.Identifier.mObjectHandle:I
istore 7
start local 7 24: goto 26
end local 8 end local 7 25: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
ldc "Unexpected document type."
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
start local 7 start local 8 26: StackMap locals: com.android.mtp.MtpDocumentsProvider java.lang.String java.lang.String java.lang.String com.android.mtp.Identifier com.android.mtp.MtpDeviceRecord top int int
StackMap stack:
invokestatic android.os.ParcelFileDescriptor.createReliablePipe:()[Landroid/os/ParcelFileDescriptor;
astore 6
start local 6 27: iconst_m1
istore 9
start local 9 28: aconst_null
astore 10
start local 10 29: aload 6
iconst_0
aaload
invokevirtual android.os.ParcelFileDescriptor.close:()V
30: ldc "vnd.android.document/directory"
aload 2
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 32
31: sipush 12289
goto 33
32: StackMap locals: com.android.mtp.MtpDocumentsProvider java.lang.String java.lang.String java.lang.String com.android.mtp.Identifier com.android.mtp.MtpDeviceRecord android.os.ParcelFileDescriptor[] int int int android.mtp.MtpObjectInfo
StackMap stack:
aload 3
aload 2
invokestatic android.media.MediaFile.getFormatCode:(Ljava/lang/String;Ljava/lang/String;)I
33: StackMap locals:
StackMap stack: int
istore 11
start local 11 34: new android.mtp.MtpObjectInfo$Builder
dup
invokespecial android.mtp.MtpObjectInfo$Builder.<init>:()V
35: iload 8
invokevirtual android.mtp.MtpObjectInfo$Builder.setStorageId:(I)Landroid/mtp/MtpObjectInfo$Builder;
36: iload 7
invokevirtual android.mtp.MtpObjectInfo$Builder.setParent:(I)Landroid/mtp/MtpObjectInfo$Builder;
37: iload 11
invokevirtual android.mtp.MtpObjectInfo$Builder.setFormat:(I)Landroid/mtp/MtpObjectInfo$Builder;
38: aload 3
invokevirtual android.mtp.MtpObjectInfo$Builder.setName:(Ljava/lang/String;)Landroid/mtp/MtpObjectInfo$Builder;
39: invokevirtual android.mtp.MtpObjectInfo$Builder.build:()Landroid/mtp/MtpObjectInfo;
40: astore 10
41: aload 2
aload 3
invokestatic android.os.FileUtils.splitFileName:(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
astore 12
start local 12 42: aload 12
iconst_0
aaload
astore 13
start local 13 43: aload 12
iconst_1
aaload
astore 14
start local 14 44: iconst_0
istore 15
start local 15 45: goto 60
46: StackMap locals: com.android.mtp.MtpDocumentsProvider java.lang.String java.lang.String java.lang.String com.android.mtp.Identifier com.android.mtp.MtpDeviceRecord android.os.ParcelFileDescriptor[] int int int android.mtp.MtpObjectInfo int java.lang.String[] java.lang.String java.lang.String int
StackMap stack:
iload 15
ifne 49
47: aload 10
astore 16
start local 16 48: goto 54
end local 16 49: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
aload 13
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " ("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 15
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " )"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 17
start local 17 50: aload 14
invokevirtual java.lang.String.isEmpty:()Z
ifne 52
51: new java.lang.StringBuilder
dup
aload 17
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 14
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 17
52: StackMap locals: com.android.mtp.MtpDocumentsProvider java.lang.String java.lang.String java.lang.String com.android.mtp.Identifier com.android.mtp.MtpDeviceRecord android.os.ParcelFileDescriptor[] int int int android.mtp.MtpObjectInfo int java.lang.String[] java.lang.String java.lang.String int top java.lang.String
StackMap stack:
new android.mtp.MtpObjectInfo$Builder
dup
aload 10
invokespecial android.mtp.MtpObjectInfo$Builder.<init>:(Landroid/mtp/MtpObjectInfo;)V
aload 17
invokevirtual android.mtp.MtpObjectInfo$Builder.setName:(Ljava/lang/String;)Landroid/mtp/MtpObjectInfo$Builder;
invokevirtual android.mtp.MtpObjectInfo$Builder.build:()Landroid/mtp/MtpObjectInfo;
53: astore 16
end local 17 start local 16 54: StackMap locals: com.android.mtp.MtpDocumentsProvider java.lang.String java.lang.String java.lang.String com.android.mtp.Identifier com.android.mtp.MtpDeviceRecord android.os.ParcelFileDescriptor[] int int int android.mtp.MtpObjectInfo int java.lang.String[] java.lang.String java.lang.String int android.mtp.MtpObjectInfo
StackMap stack:
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mMtpManager:Lcom/android/mtp/MtpManager;
55: aload 4
getfield com.android.mtp.Identifier.mDeviceId:I
aload 16
aload 6
iconst_1
aaload
56: invokevirtual com.android.mtp.MtpManager.createDocument:(ILandroid/mtp/MtpObjectInfo;Landroid/os/ParcelFileDescriptor;)I
istore 9
57: goto 65
58: StackMap locals:
StackMap stack: com.android.mtp.SendObjectInfoFailure
pop
end local 16 59: iinc 15 1
StackMap locals:
StackMap stack:
60: iload 15
bipush 32
if_icmple 46
end local 15 end local 14 end local 13 end local 12 end local 11 61: goto 65
StackMap locals: com.android.mtp.MtpDocumentsProvider java.lang.String java.lang.String java.lang.String com.android.mtp.Identifier com.android.mtp.MtpDeviceRecord android.os.ParcelFileDescriptor[] int int int android.mtp.MtpObjectInfo
StackMap stack: java.lang.Throwable
62: astore 18
63: aload 6
iconst_1
aaload
invokevirtual android.os.ParcelFileDescriptor.close:()V
64: aload 18
athrow
65: StackMap locals:
StackMap stack:
aload 6
iconst_1
aaload
invokevirtual android.os.ParcelFileDescriptor.close:()V
66: iload 9
iconst_m1
if_icmpne 72
67: new java.lang.IllegalArgumentException
dup
68: new java.lang.StringBuilder
dup
ldc "The file name \""
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "\" is conflicted with existing files "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
69: ldc "and the provider failed to find unique name."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
70: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
71: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
72: StackMap locals:
StackMap stack:
new android.mtp.MtpObjectInfo$Builder
dup
aload 10
invokespecial android.mtp.MtpObjectInfo$Builder.<init>:(Landroid/mtp/MtpObjectInfo;)V
iload 9
invokevirtual android.mtp.MtpObjectInfo$Builder.setObjectHandle:(I)Landroid/mtp/MtpObjectInfo$Builder;
invokevirtual android.mtp.MtpObjectInfo$Builder.build:()Landroid/mtp/MtpObjectInfo;
73: astore 11
start local 11 74: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
75: aload 4
getfield com.android.mtp.Identifier.mDeviceId:I
aload 1
aload 5
getfield com.android.mtp.MtpDeviceRecord.operationsSupported:[I
76: aload 11
lconst_0
77: invokevirtual com.android.mtp.MtpDatabase.putNewDocument:(ILjava/lang/String;[ILandroid/mtp/MtpObjectInfo;J)Ljava/lang/String;
astore 12
start local 12 78: aload 0
aload 4
invokevirtual com.android.mtp.MtpDocumentsProvider.getDocumentLoader:(Lcom/android/mtp/Identifier;)Lcom/android/mtp/DocumentLoader;
aload 4
invokevirtual com.android.mtp.DocumentLoader.cancelTask:(Lcom/android/mtp/Identifier;)V
79: aload 0
aload 1
invokevirtual com.android.mtp.MtpDocumentsProvider.notifyChildDocumentsChange:(Ljava/lang/String;)V
80: aload 12
81: areturn
end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 82: StackMap locals: com.android.mtp.MtpDocumentsProvider java.lang.String java.lang.String java.lang.String
StackMap stack: java.lang.Exception
astore 7
start local 7 83: ldc "MtpDocumentsProvider"
ldc "createDocument"
aload 7
invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
pop
84: aload 7
athrow
end local 7 85: StackMap locals:
StackMap stack: java.io.IOException
astore 7
start local 7 86: ldc "MtpDocumentsProvider"
ldc "createDocument"
aload 7
invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
pop
87: new java.lang.IllegalStateException
dup
aload 7
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 7 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 88 0 this Lcom/android/mtp/MtpDocumentsProvider;
0 88 1 parentDocumentId Ljava/lang/String;
0 88 2 mimeType Ljava/lang/String;
0 88 3 displayName Ljava/lang/String;
1 82 4 parentId Lcom/android/mtp/Identifier;
3 82 5 record Lcom/android/mtp/MtpDeviceRecord;
27 82 6 pipe [Landroid/os/ParcelFileDescriptor;
21 22 7 parentObjectHandle I
24 25 7 parentObjectHandle I
26 82 7 parentObjectHandle I
20 22 8 storageId I
23 25 8 storageId I
26 82 8 storageId I
10 19 9 storageDocumentIds [Ljava/lang/String;
13 16 10 newDocumentId Ljava/lang/String;
28 82 9 objectHandle I
29 82 10 info Landroid/mtp/MtpObjectInfo;
34 61 11 formatCode I
42 61 12 parts [Ljava/lang/String;
43 61 13 baseName Ljava/lang/String;
44 61 14 extension Ljava/lang/String;
45 61 15 i I
48 49 16 infoUniqueName Landroid/mtp/MtpObjectInfo;
54 59 16 infoUniqueName Landroid/mtp/MtpObjectInfo;
50 54 17 suffixedName Ljava/lang/String;
74 82 11 infoWithHandle Landroid/mtp/MtpObjectInfo;
78 82 12 documentId Ljava/lang/String;
83 85 7 error Ljava/lang/Exception;
86 88 7 error Ljava/io/IOException;
Exception table:
from to target type
54 57 58 Class com.android.mtp.SendObjectInfoFailure
29 62 62 any
0 15 82 Class java.io.FileNotFoundException
16 81 82 Class java.io.FileNotFoundException
0 15 82 Class java.lang.RuntimeException
16 81 82 Class java.lang.RuntimeException
0 15 85 Class java.io.IOException
16 81 85 Class java.io.IOException
Exceptions:
throws java.io.FileNotFoundException
MethodParameters:
Name Flags
parentDocumentId
mimeType
displayName
public android.provider.DocumentsContract$Path findDocumentPath(java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;)Landroid/provider/DocumentsContract$Path;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=8, args_size=3
start local 0 start local 1 start local 2 0: new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
astore 3
start local 3 1: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
aload 2
invokevirtual com.android.mtp.MtpDatabase.createIdentifier:(Ljava/lang/String;)Lcom/android/mtp/Identifier;
astore 4
start local 4 2: aload 4
astore 5
start local 5 3: StackMap locals: java.util.LinkedList com.android.mtp.Identifier com.android.mtp.Identifier
StackMap stack:
aload 5
getfield com.android.mtp.Identifier.mDocumentId:Ljava/lang/String;
aload 1
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 6
4: aload 3
aload 5
getfield com.android.mtp.Identifier.mDocumentId:Ljava/lang/String;
invokevirtual java.util.LinkedList.addFirst:(Ljava/lang/Object;)V
5: goto 22
6: StackMap locals:
StackMap stack:
aload 5
getfield com.android.mtp.Identifier.mDocumentType:I
tableswitch { // 0 - 2
0: 19
1: 10
2: 7
default: 21
}
7: StackMap locals:
StackMap stack:
aload 3
aload 5
getfield com.android.mtp.Identifier.mDocumentId:Ljava/lang/String;
invokevirtual java.util.LinkedList.addFirst:(Ljava/lang/Object;)V
8: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
aload 5
getfield com.android.mtp.Identifier.mDocumentId:Ljava/lang/String;
invokevirtual com.android.mtp.MtpDatabase.getParentIdentifier:(Ljava/lang/String;)Lcom/android/mtp/Identifier;
astore 5
9: goto 3
10: StackMap locals:
StackMap stack:
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
aload 5
getfield com.android.mtp.Identifier.mDocumentId:Ljava/lang/String;
invokevirtual com.android.mtp.MtpDatabase.getParentIdentifier:(Ljava/lang/String;)Lcom/android/mtp/Identifier;
11: astore 6
start local 6 12: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
aload 6
getfield com.android.mtp.Identifier.mDocumentId:Ljava/lang/String;
invokevirtual com.android.mtp.MtpDatabase.getStorageDocumentIds:(Ljava/lang/String;)[Ljava/lang/String;
13: astore 7
start local 7 14: aload 7
arraylength
iconst_1
if_icmple 17
15: aload 3
aload 5
getfield com.android.mtp.Identifier.mDocumentId:Ljava/lang/String;
invokevirtual java.util.LinkedList.addFirst:(Ljava/lang/Object;)V
16: goto 22
17: StackMap locals: com.android.mtp.Identifier java.lang.String[]
StackMap stack:
aload 6
astore 5
18: goto 3
end local 7 end local 6 19: StackMap locals:
StackMap stack:
aload 3
aload 5
getfield com.android.mtp.Identifier.mDocumentId:Ljava/lang/String;
invokevirtual java.util.LinkedList.addFirst:(Ljava/lang/Object;)V
20: goto 22
21: StackMap locals:
StackMap stack:
goto 3
22: StackMap locals:
StackMap stack:
aload 1
ifnull 24
23: new android.provider.DocumentsContract$Path
dup
aconst_null
aload 3
invokespecial android.provider.DocumentsContract$Path.<init>:(Ljava/lang/String;Ljava/util/List;)V
areturn
24: StackMap locals:
StackMap stack:
new android.provider.DocumentsContract$Path
dup
aload 5
getfield com.android.mtp.Identifier.mDocumentId:Ljava/lang/String;
aload 3
invokespecial android.provider.DocumentsContract$Path.<init>:(Ljava/lang/String;Ljava/util/List;)V
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 25 0 this Lcom/android/mtp/MtpDocumentsProvider;
0 25 1 parentDocumentId Ljava/lang/String;
0 25 2 childDocumentId Ljava/lang/String;
1 25 3 ids Ljava/util/LinkedList<Ljava/lang/String;>;
2 25 4 childIdentifier Lcom/android/mtp/Identifier;
3 25 5 i Lcom/android/mtp/Identifier;
12 19 6 deviceIdentifier Lcom/android/mtp/Identifier;
14 19 7 storageIds [Ljava/lang/String;
Exceptions:
throws java.io.FileNotFoundException
MethodParameters:
Name Flags
parentDocumentId
childDocumentId
public boolean isChildDocument(java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
aload 2
invokevirtual com.android.mtp.MtpDatabase.createIdentifier:(Ljava/lang/String;)Lcom/android/mtp/Identifier;
astore 3
start local 3 1: StackMap locals: com.android.mtp.Identifier
StackMap stack:
aload 1
aload 3
getfield com.android.mtp.Identifier.mDocumentId:Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 3
2: iconst_1
ireturn
3: StackMap locals:
StackMap stack:
aload 3
getfield com.android.mtp.Identifier.mDocumentType:I
ifne 5
4: iconst_0
ireturn
5: StackMap locals:
StackMap stack:
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
aload 3
getfield com.android.mtp.Identifier.mDocumentId:Ljava/lang/String;
invokevirtual com.android.mtp.MtpDatabase.getParentIdentifier:(Ljava/lang/String;)Lcom/android/mtp/Identifier;
astore 3
6: goto 1
end local 3 7: StackMap locals: com.android.mtp.MtpDocumentsProvider java.lang.String java.lang.String
StackMap stack: java.io.FileNotFoundException
pop
8: iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/android/mtp/MtpDocumentsProvider;
0 9 1 parentDocumentId Ljava/lang/String;
0 9 2 documentId Ljava/lang/String;
1 7 3 identifier Lcom/android/mtp/Identifier;
Exception table:
from to target type
0 2 7 Class java.io.FileNotFoundException
3 4 7 Class java.io.FileNotFoundException
5 7 7 Class java.io.FileNotFoundException
MethodParameters:
Name Flags
parentDocumentId
documentId
public android.os.Bundle getDocumentMetadata(java.lang.String);
descriptor: (Ljava/lang/String;)Landroid/os/Bundle;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 0: new java.lang.Error
dup
ldc "Unresolved compilation problem: \n\tIoUtils cannot be resolved\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/android/mtp/MtpDocumentsProvider;
Exceptions:
throws java.io.FileNotFoundException
MethodParameters:
Name Flags
docId
void openDevice(int);
descriptor: (I)V
flags: (0x0000)
Code:
stack=6, locals=6, args_size=2
start local 0 start local 1 0: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDeviceListLock:Ljava/lang/Object;
dup
astore 2
monitorenter
1: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDeviceToolkits:Ljava/util/Map;
iload 1
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
ifeq 4
2: aload 2
monitorexit
3: return
4: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mMtpManager:Lcom/android/mtp/MtpManager;
iload 1
invokevirtual com.android.mtp.MtpManager.openDevice:(I)Lcom/android/mtp/MtpDeviceRecord;
astore 3
start local 3 5: new com.android.mtp.MtpDocumentsProvider$DeviceToolkit
dup
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mMtpManager:Lcom/android/mtp/MtpManager;
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mResolver:Landroid/content/ContentResolver;
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
aload 3
invokespecial com.android.mtp.MtpDocumentsProvider$DeviceToolkit.<init>:(Lcom/android/mtp/MtpManager;Landroid/content/ContentResolver;Lcom/android/mtp/MtpDatabase;Lcom/android/mtp/MtpDeviceRecord;)V
6: astore 4
start local 4 7: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDeviceToolkits:Ljava/util/Map;
iload 1
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 4
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
8: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mIntentSender:Lcom/android/mtp/ServiceIntentSender;
aload 0
invokevirtual com.android.mtp.MtpDocumentsProvider.getOpenedDeviceRecordsCache:()[Lcom/android/mtp/MtpDeviceRecord;
invokevirtual com.android.mtp.ServiceIntentSender.sendUpdateNotificationIntent:([Lcom/android/mtp/MtpDeviceRecord;)V
9: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mRootScanner:Lcom/android/mtp/RootScanner;
invokevirtual com.android.mtp.RootScanner.resume:()Ljava/util/concurrent/CountDownLatch;
invokevirtual java.util.concurrent.CountDownLatch.await:()V
10: goto 13
StackMap locals: com.android.mtp.MtpDocumentsProvider int java.lang.Object com.android.mtp.MtpDeviceRecord com.android.mtp.MtpDocumentsProvider$DeviceToolkit
StackMap stack: java.lang.InterruptedException
11: astore 5
start local 5 12: ldc "MtpDocumentsProvider"
ldc "openDevice"
aload 5
invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
pop
end local 5 13: StackMap locals:
StackMap stack:
aload 4
getfield com.android.mtp.MtpDocumentsProvider$DeviceToolkit.mDocumentLoader:Lcom/android/mtp/DocumentLoader;
invokevirtual com.android.mtp.DocumentLoader.resume:()V
end local 4 end local 3 14: aload 2
monitorexit
15: goto 18
StackMap locals: com.android.mtp.MtpDocumentsProvider int java.lang.Object
StackMap stack: java.lang.Throwable
16: aload 2
monitorexit
17: athrow
18: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lcom/android/mtp/MtpDocumentsProvider;
0 19 1 deviceId I
5 14 3 device Lcom/android/mtp/MtpDeviceRecord;
7 14 4 toolkit Lcom/android/mtp/MtpDocumentsProvider$DeviceToolkit;
12 13 5 error Ljava/lang/InterruptedException;
Exception table:
from to target type
9 10 11 Class java.lang.InterruptedException
1 3 16 any
4 15 16 any
16 17 16 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
deviceId
void closeDevice(int);
descriptor: (I)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDeviceListLock:Ljava/lang/Object;
dup
astore 2
monitorenter
1: aload 0
iload 1
invokevirtual com.android.mtp.MtpDocumentsProvider.closeDeviceInternal:(I)V
2: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mIntentSender:Lcom/android/mtp/ServiceIntentSender;
aload 0
invokevirtual com.android.mtp.MtpDocumentsProvider.getOpenedDeviceRecordsCache:()[Lcom/android/mtp/MtpDeviceRecord;
invokevirtual com.android.mtp.ServiceIntentSender.sendUpdateNotificationIntent:([Lcom/android/mtp/MtpDeviceRecord;)V
3: aload 2
monitorexit
4: goto 7
StackMap locals: com.android.mtp.MtpDocumentsProvider int java.lang.Object
StackMap stack: java.lang.Throwable
5: aload 2
monitorexit
6: athrow
7: StackMap locals:
StackMap stack:
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mRootScanner:Lcom/android/mtp/RootScanner;
invokevirtual com.android.mtp.RootScanner.resume:()Ljava/util/concurrent/CountDownLatch;
pop
8: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/android/mtp/MtpDocumentsProvider;
0 9 1 deviceId I
Exception table:
from to target type
1 4 5 any
5 6 5 any
Exceptions:
throws java.io.IOException, java.lang.InterruptedException
MethodParameters:
Name Flags
deviceId
com.android.mtp.MtpDeviceRecord[] getOpenedDeviceRecordsCache();
descriptor: ()[Lcom/android/mtp/MtpDeviceRecord;
flags: (0x0000)
Code:
stack=3, locals=6, args_size=1
start local 0 0: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDeviceListLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDeviceToolkits:Ljava/util/Map;
invokeinterface java.util.Map.size:()I
anewarray com.android.mtp.MtpDeviceRecord
astore 2
start local 2 2: iconst_0
istore 3
start local 3 3: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDeviceToolkits:Ljava/util/Map;
invokeinterface java.util.Map.values:()Ljava/util/Collection;
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 5
goto 7
StackMap locals: com.android.mtp.MtpDocumentsProvider java.lang.Object com.android.mtp.MtpDeviceRecord[] int top java.util.Iterator
StackMap stack:
4: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.android.mtp.MtpDocumentsProvider$DeviceToolkit
astore 4
start local 4 5: aload 2
iload 3
aload 4
getfield com.android.mtp.MtpDocumentsProvider$DeviceToolkit.mDeviceRecord:Lcom/android/mtp/MtpDeviceRecord;
aastore
6: iinc 3 1
end local 4 7: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
8: aload 2
aload 1
monitorexit
9: areturn
end local 3 end local 2 10: StackMap locals: com.android.mtp.MtpDocumentsProvider java.lang.Object
StackMap stack: java.lang.Throwable
aload 1
monitorexit
11: athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/android/mtp/MtpDocumentsProvider;
2 10 2 records [Lcom/android/mtp/MtpDeviceRecord;
3 10 3 i I
5 7 4 toolkit Lcom/android/mtp/MtpDocumentsProvider$DeviceToolkit;
Exception table:
from to target type
1 9 10 any
10 11 10 any
public java.lang.String getDeviceDocumentId(int);
descriptor: (I)Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
iload 1
invokevirtual com.android.mtp.MtpDatabase.getDeviceDocumentId:(I)Ljava/lang/String;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/android/mtp/MtpDocumentsProvider;
0 1 1 deviceId I
Exceptions:
throws java.io.FileNotFoundException
MethodParameters:
Name Flags
deviceId
void resumeRootScanner();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mRootScanner:Lcom/android/mtp/RootScanner;
invokevirtual com.android.mtp.RootScanner.resume:()Ljava/util/concurrent/CountDownLatch;
pop
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/android/mtp/MtpDocumentsProvider;
public void shutdown();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=8, args_size=1
start local 0 0: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDeviceListLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDeviceToolkits:Ljava/util/Map;
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDeviceToolkits:Ljava/util/Map;
invokeinterface java.util.Map.size:()I
anewarray java.lang.Integer
invokeinterface java.util.Set.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
checkcast java.lang.Integer[]
2: astore 2
start local 2 3: aload 2
dup
astore 6
arraylength
istore 5
iconst_0
istore 4
goto 7
StackMap locals: com.android.mtp.MtpDocumentsProvider java.lang.Object java.lang.Integer[] top int int java.lang.Integer[]
StackMap stack:
4: aload 6
iload 4
aaload
invokevirtual java.lang.Integer.intValue:()I
istore 3
start local 3 5: aload 0
iload 3
invokevirtual com.android.mtp.MtpDocumentsProvider.closeDeviceInternal:(I)V
end local 3 6: iinc 4 1
StackMap locals:
StackMap stack:
7: iload 4
iload 5
if_icmplt 4
8: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mRootScanner:Lcom/android/mtp/RootScanner;
invokevirtual com.android.mtp.RootScanner.pause:()V
end local 2 9: goto 16
StackMap locals: com.android.mtp.MtpDocumentsProvider java.lang.Object
StackMap stack: java.lang.Exception
10: astore 2
start local 2 11: new java.lang.RuntimeException
dup
aload 2
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 2 12: StackMap locals:
StackMap stack: java.lang.Throwable
astore 7
13: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
invokevirtual com.android.mtp.MtpDatabase.close:()V
14: aload 0
invokespecial android.provider.DocumentsProvider.shutdown:()V
15: aload 7
athrow
16: StackMap locals:
StackMap stack:
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
invokevirtual com.android.mtp.MtpDatabase.close:()V
17: aload 0
invokespecial android.provider.DocumentsProvider.shutdown:()V
18: aload 1
monitorexit
19: goto 22
StackMap locals:
StackMap stack: java.lang.Throwable
20: aload 1
monitorexit
21: athrow
22: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lcom/android/mtp/MtpDocumentsProvider;
3 9 2 keySet [Ljava/lang/Integer;
5 6 3 id I
11 12 2 e Ljava/lang/Exception;
Exception table:
from to target type
1 9 10 Class java.lang.InterruptedException
1 9 10 Class java.io.IOException
1 9 10 Class java.util.concurrent.TimeoutException
1 12 12 any
1 19 20 any
20 21 20 any
private void notifyChildDocumentsChange(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mResolver:Landroid/content/ContentResolver;
1: ldc "com.android.mtp.documents"
aload 1
invokestatic android.provider.DocumentsContract.buildChildDocumentsUri:(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;
2: aconst_null
3: iconst_0
4: invokevirtual android.content.ContentResolver.notifyChange:(Landroid/net/Uri;Landroid/database/ContentObserver;Z)V
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/android/mtp/MtpDocumentsProvider;
0 6 1 parentDocumentId Ljava/lang/String;
MethodParameters:
Name Flags
parentDocumentId
private void resume();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDeviceListLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
invokevirtual com.android.mtp.MtpDatabase.getMapper:()Lcom/android/mtp/Mapper;
invokevirtual com.android.mtp.Mapper.clearMapping:()V
2: aload 1
monitorexit
3: goto 6
StackMap locals: com.android.mtp.MtpDocumentsProvider java.lang.Object
StackMap stack: java.lang.Throwable
4: aload 1
monitorexit
5: athrow
6: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/android/mtp/MtpDocumentsProvider;
Exception table:
from to target type
1 3 4 any
4 5 4 any
private void closeDeviceInternal(int);
descriptor: (I)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDeviceToolkits:Ljava/util/Map;
iload 1
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
ifne 2
1: return
2: StackMap locals:
StackMap stack:
aload 0
iload 1
invokevirtual com.android.mtp.MtpDocumentsProvider.getDeviceToolkit:(I)Lcom/android/mtp/MtpDocumentsProvider$DeviceToolkit;
invokevirtual com.android.mtp.MtpDocumentsProvider$DeviceToolkit.close:()V
3: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDeviceToolkits:Ljava/util/Map;
iload 1
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
4: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mMtpManager:Lcom/android/mtp/MtpManager;
iload 1
invokevirtual com.android.mtp.MtpManager.closeDevice:(I)V
5: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/android/mtp/MtpDocumentsProvider;
0 6 1 deviceId I
Exceptions:
throws java.io.IOException, java.lang.InterruptedException
MethodParameters:
Name Flags
deviceId
private com.android.mtp.MtpDocumentsProvider$DeviceToolkit getDeviceToolkit(int);
descriptor: (I)Lcom/android/mtp/MtpDocumentsProvider$DeviceToolkit;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDeviceListLock:Ljava/lang/Object;
dup
astore 2
monitorenter
1: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDeviceToolkits:Ljava/util/Map;
iload 1
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.android.mtp.MtpDocumentsProvider$DeviceToolkit
astore 3
start local 3 2: aload 3
ifnonnull 4
3: new java.io.FileNotFoundException
dup
invokespecial java.io.FileNotFoundException.<init>:()V
athrow
4: StackMap locals: java.lang.Object com.android.mtp.MtpDocumentsProvider$DeviceToolkit
StackMap stack:
aload 3
aload 2
monitorexit
5: areturn
end local 3 6: StackMap locals: com.android.mtp.MtpDocumentsProvider int java.lang.Object
StackMap stack: java.lang.Throwable
aload 2
monitorexit
7: athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/android/mtp/MtpDocumentsProvider;
0 8 1 deviceId I
2 6 3 toolkit Lcom/android/mtp/MtpDocumentsProvider$DeviceToolkit;
Exception table:
from to target type
1 5 6 any
6 7 6 any
Exceptions:
throws java.io.FileNotFoundException
MethodParameters:
Name Flags
deviceId
private com.android.mtp.PipeManager getPipeManager(com.android.mtp.Identifier);
descriptor: (Lcom/android/mtp/Identifier;)Lcom/android/mtp/PipeManager;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
getfield com.android.mtp.Identifier.mDeviceId:I
invokevirtual com.android.mtp.MtpDocumentsProvider.getDeviceToolkit:(I)Lcom/android/mtp/MtpDocumentsProvider$DeviceToolkit;
getfield com.android.mtp.MtpDocumentsProvider$DeviceToolkit.mPipeManager:Lcom/android/mtp/PipeManager;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/android/mtp/MtpDocumentsProvider;
0 1 1 identifier Lcom/android/mtp/Identifier;
Exceptions:
throws java.io.FileNotFoundException
MethodParameters:
Name Flags
identifier
private com.android.mtp.DocumentLoader getDocumentLoader(com.android.mtp.Identifier);
descriptor: (Lcom/android/mtp/Identifier;)Lcom/android/mtp/DocumentLoader;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
getfield com.android.mtp.Identifier.mDeviceId:I
invokevirtual com.android.mtp.MtpDocumentsProvider.getDeviceToolkit:(I)Lcom/android/mtp/MtpDocumentsProvider$DeviceToolkit;
getfield com.android.mtp.MtpDocumentsProvider$DeviceToolkit.mDocumentLoader:Lcom/android/mtp/DocumentLoader;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/android/mtp/MtpDocumentsProvider;
0 1 1 identifier Lcom/android/mtp/Identifier;
Exceptions:
throws java.io.FileNotFoundException
MethodParameters:
Name Flags
identifier
private long getFileSize(java.lang.String);
descriptor: (Ljava/lang/String;)J
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=6, args_size=2
start local 0 start local 1 0: aload 0
getfield com.android.mtp.MtpDocumentsProvider.mDatabase:Lcom/android/mtp/MtpDatabase;
1: aload 1
iconst_2
anewarray java.lang.Object
dup
iconst_0
2: ldc "_size"
aastore
dup
iconst_1
ldc "_display_name"
aastore
invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
3: invokevirtual com.android.mtp.MtpDatabase.queryDocument:(Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor;
astore 2
start local 2 4: aload 2
invokeinterface android.database.Cursor.moveToNext:()Z
ifeq 10
5: aload 2
iconst_0
invokeinterface android.database.Cursor.isNull:(I)Z
ifeq 7
6: new java.lang.UnsupportedOperationException
dup
invokespecial java.lang.UnsupportedOperationException.<init>:()V
athrow
7: StackMap locals: android.database.Cursor
StackMap stack:
aload 2
iconst_0
invokeinterface android.database.Cursor.getLong:(I)J
lstore 4
8: aload 2
invokeinterface android.database.Cursor.close:()V
9: lload 4
lreturn
10: StackMap locals:
StackMap stack:
new java.io.FileNotFoundException
dup
invokespecial java.io.FileNotFoundException.<init>:()V
athrow
11: StackMap locals:
StackMap stack: java.lang.Throwable
astore 3
12: aload 2
invokeinterface android.database.Cursor.close:()V
13: aload 3
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lcom/android/mtp/MtpDocumentsProvider;
0 14 1 documentId Ljava/lang/String;
4 14 2 cursor Landroid/database/Cursor;
Exception table:
from to target type
4 8 11 any
10 11 11 any
Exceptions:
throws java.io.FileNotFoundException
MethodParameters:
Name Flags
documentId
private android.database.Cursor createErrorCursor(java.lang.String[], int);
descriptor: ([Ljava/lang/String;I)Landroid/database/Cursor;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=3
start local 0 start local 1 start local 2 0: new android.os.Bundle
dup
invokespecial android.os.Bundle.<init>:()V
astore 3
start local 3 1: aload 3
ldc "error"
aload 0
getfield com.android.mtp.MtpDocumentsProvider.mResources:Landroid/content/res/Resources;
iload 2
invokevirtual android.content.res.Resources.getString:(I)Ljava/lang/String;
invokevirtual android.os.Bundle.putString:(Ljava/lang/String;Ljava/lang/String;)V
2: new android.database.MatrixCursor
dup
aload 1
invokespecial android.database.MatrixCursor.<init>:([Ljava/lang/String;)V
astore 4
start local 4 3: aload 4
aload 3
invokeinterface android.database.Cursor.setExtras:(Landroid/os/Bundle;)V
4: aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/android/mtp/MtpDocumentsProvider;
0 5 1 projection [Ljava/lang/String;
0 5 2 stringResId I
1 5 3 bundle Landroid/os/Bundle;
3 5 4 cursor Landroid/database/Cursor;
MethodParameters:
Name Flags
projection
stringResId
}
SourceFile: "MtpDocumentsProvider.java"
NestMembers:
com.android.mtp.MtpDocumentsProvider$DeviceToolkit com.android.mtp.MtpDocumentsProvider$MtpProxyFileDescriptorCallback
InnerClasses:
public Builder = android.mtp.MtpObjectInfo$Builder of android.mtp.MtpObjectInfo
public final Path = android.provider.DocumentsContract$Path of android.provider.DocumentsContract
public final Global = android.provider.Settings$Global of android.provider.Settings
private DeviceToolkit = com.android.mtp.MtpDocumentsProvider$DeviceToolkit of com.android.mtp.MtpDocumentsProvider
private MtpProxyFileDescriptorCallback = com.android.mtp.MtpDocumentsProvider$MtpProxyFileDescriptorCallback of com.android.mtp.MtpDocumentsProvider