package Ġcom . xh hold . plugin . music _ player . provider Ċ Ċ import Ġandroid . content . Content Provider Ċ import Ġandroid . content . Content Values Ċ import Ġandroid . content . Uri Matcher Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Parcel FileDescriptor Ċ import Ġandroid . util . Log Ċ import Ġcom . xh hold . plugin . music _ player . ext . to Path Ċ import Ġcom . xh hold . plugin . music _ player . manager . FileManager Ċ import Ġjava . io . File Ċ import Ġjava . lang . Exception Ċ Ċ class ĠMusic Provider Ġ: ĠContent Provider () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Music Provider " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate (): ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġquery ( ĊĠĠĠĠĠĠĠ Ġuri : ĠUri , ĊĠĠĠĠĠĠĠ Ġprojection : ĠArray < out ĠString > ?, ĊĠĠĠĠĠĠĠ Ġselection : ĠString ?, ĊĠĠĠĠĠĠĠ Ġselection Args : ĠArray < out ĠString > ?, ĊĠĠĠĠĠĠĠ Ġsort Order : ĠString ? ĊĠĠĠ Ġ): ĠCursor ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠgetType ( uri : ĠUri ): ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġinsert ( uri : ĠUri , Ġvalues : ĠContent Values ?): ĠUri ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġdelete ( uri : ĠUri , Ġselection : ĠString ?, Ġselection Args : ĠArray < out ĠString >? ): ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( ĊĠĠĠĠĠĠĠ Ġuri : ĠUri , ĊĠĠĠĠĠĠĠ Ġvalues : ĠContent Values ?, ĊĠĠĠĠĠĠĠ Ġselection : ĠString ?, ĊĠĠĠĠĠĠĠ Ġselection Args : ĠArray < out ĠString >? ĊĠĠĠ Ġ): ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġopen File ( uri : ĠUri , Ġmode : ĠString ): ĠParcel FileDescriptor ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġuri . to Path () Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠParcel FileDescriptor . open ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile ( path ), ĠParcel FileDescriptor . MODE _ READ _ ONLY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" open File Ġfield : Ġ${ e . message }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }