0

My application is crashing automatically. whats wrong with this?

i am working on music player application and its look everything perfect but somewhere the code is not matching properly and its crashing every time.

class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private lateinit var toggle: ActionBarDrawerToggle
private lateinit var musicAdapter: MusicAdapter

companion object{
    var MusicListMA :ArrayList<MusicData> = ArrayList()
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)

    //This function holds all the initialisation splash,navigation,adapter for music etc
   initializeLayout()

    //this all hold function of calling onClicked method for button
    shuffleButtonFunc()
    favoriteButtonFunc()
    playListButtonFunc()

    naveViewFunc()


}

private fun playListButtonFunc() {
    binding.playListButton.setOnClickListener(){
       Toast.makeText(this, "playlist clicked", Toast.LENGTH_SHORT).show()
       val intent = Intent(this,PlaylistActivity::class.java)
       startActivity(intent)
   }
}

private fun favoriteButtonFunc() {
    binding.favoriteButton.setOnClickListener(){
        Toast.makeText(this, "favorite clicked", Toast.LENGTH_SHORT).show()
        val intent = Intent(this,FavoriteActivity::class.java)
        startActivity(intent)
    }
}

private fun shuffleButtonFunc() {
    binding.shuffleButton.setOnClickListener() {
        Toast.makeText(this, "shuffle clicked", Toast.LENGTH_SHORT).show()
        val intent = Intent(this,PlayerActivity::class.java)
        startActivity(intent)
    }
}

private fun naveViewFunc(){
    binding.naveView.setNavigationItemSelectedListener(){
        when(it.itemId){
            R.id.about_nave -> Toast.makeText(baseContext,"about nave clicked",Toast.LENGTH_SHORT).show()
            R.id.setting_nave -> Toast.makeText(this,"setting nave clicked",Toast.LENGTH_SHORT).show()
            R.id.feedback_nave -> Toast.makeText(this,"feedback nave clicked",Toast.LENGTH_SHORT).show()
            R.id.exit_nave -> exitProcess( 1)
        }
        true
    }
}

//permission request runtime
private fun requestRuntimePermission(){
    if (ActivityCompat.checkSelfPermission(this,android.Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED)
    {
        ActivityCompat.requestPermissions(this, arrayOf(android.Manifest.permission.WRITE_EXTERNAL_STORAGE),13)
    }
}

override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray)
{
    super.onRequestPermissionsResult(requestCode, permissions, grantResults)
    if (requestCode==13){
        if (grantResults.isEmpty() && grantResults[0]==PackageManager.PERMISSION_GRANTED){
            Toast.makeText(this,"permission granted access",Toast.LENGTH_SHORT).show()
        }
        else
            ActivityCompat.requestPermissions(this, arrayOf(WRITE_EXTERNAL_STORAGE),13) //if not request runtime
    }
}

// action drawerBar navigation override to display in app
override fun onOptionsItemSelected(item: MenuItem): Boolean {
    if (toggle.onOptionsItemSelected(item))
        return true

    return super.onOptionsItemSelected(item)
}

//starting required code collected into this function inorder to look clean oncreat method
private fun initializeLayout(){

    //RUNTIME REQUEST PERMISSION FUNCTION CALLING
    requestRuntimePermission()
    setTheme(R.style.splash_screen_style)

    //for navigation side Bar drawer
    toggle = ActionBarDrawerToggle(this,binding.root,R.string.open,R.string.close)
    binding.root.addDrawerListener(toggle)
    toggle.syncState()
    supportActionBar?.setDisplayHomeAsUpEnabled(true)

    MusicListMA = getAllAudio()

    binding.musicRV.setHasFixedSize(true)  //set fix size to save memory
    binding.musicRV.setItemViewCacheSize(13)
    binding.musicRV.layoutManager = LinearLayoutManager(this@MainActivity)
    musicAdapter = MusicAdapter(this@MainActivity, MusicListMA)
    binding.musicRV.adapter = musicAdapter

    binding.totalSong.text = "Total Song : "+musicAdapter.itemCount
}

@SuppressLint("Range")
private fun getAllAudio():ArrayList<MusicData>{
    val tempList = ArrayList<MusicData>()

    val selection = MediaStore.Audio.Media.IS_MUSIC + "!=0"
    val projection = arrayOf(MediaStore.Audio.Media._ID,MediaStore.Audio.Media.TITLE,MediaStore.Audio.Media.ALBUM,
                    MediaStore.Audio.Media.ARTIST,MediaStore.Audio.Media.DURATION,MediaStore.Audio.Media.DATE_ADDED,MediaStore.Audio.Media.DATA)
    val cursor = this.contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection,selection,null,
                                    MediaStore.Audio.Media.DATE_ADDED + "DEC", null)
    if (cursor != null)
        if (cursor.moveToFirst())
            do{
                val titleC = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE))
                val idC = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID))
                val albumC = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM))
                val artistC = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST))
                val pathC = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA))
                val durationC = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION))
                val music = MusicData(id = idC, title = titleC, album = albumC, artist = artistC, duration = durationC, path = pathC)
                val file = File(music.path)
                if (file.exists()){
                    tempList.add(music)
                }

            }while (cursor.moveToNext())
            cursor?.close()


    return tempList
}
}

Logcat Detection

2021-12-27 11:03:12.641 21712-21712/? E/ample.musicvib: Unknown bits set in runtime_flags: 0x8000
2021-12-27 11:03:12.641 21712-21712/? E/ample.musicvib: Unknown bits set in runtime_flags: 0x8000
2021-12-27 11:03:12.641 21712-21712/? E/ample.musicvib: Unknown bits set in runtime_flags: 0x8000
2021-12-27 11:03:15.809 21712-21712/com.example.musicvibe E/libc: Access denied finding property "ro.vendor.df.effect.conflict"
2021-12-27 11:03:17.768 21712-21712/com.example.musicvibe E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.musicvibe, PID: 21712
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.musicvibe/com.example.musicvibe.MainActivity}: android.database.sqlite.SQLiteException: no such column: date_addedDEC (code 1 SQLITE_ERROR): , while compiling: SELECT _id, title, album, artist, duration, date_added, _data FROM audio WHERE ((owner_package_name IN ( 'com.example.musicvibe' ) OR is_ringtone=1 OR is_alarm=1 OR is_notification=1) AND (is_pending=0) AND (is_trashed=0) AND (volume_name IN ( 'external_primary' , '44c7-3e99' ))) AND (is_music!=0) ORDER BY date_addedDEC
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3310)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3459)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2046)
    at android.os.Handler.dispatchMessage(Handler.java:107)
    at android.os.Looper.loop(Looper.java:225)
    at android.app.ActivityThread.main(ActivityThread.java:7564)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
 Caused by: android.database.sqlite.SQLiteException: no such column: date_addedDEC (code 1 SQLITE_ERROR): , while compiling: SELECT _id, title, album, artist, duration, date_added, _data FROM audio WHERE ((owner_package_name IN ( 'com.example.musicvibe' ) OR is_ringtone=1 OR is_alarm=1 OR is_notification=1) AND (is_pending=0) AND (is_trashed=0) AND (volume_name IN ( 'external_primary' , '44c7-3e99' ))) AND (is_music!=0) ORDER BY date_addedDEC
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:184)
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140)
    at android.content.ContentProviderProxy.query(ContentProviderNative.java:423)
    at android.content.ContentResolver.query(ContentResolver.java:946)
    at android.content.ContentResolver.query(ContentResolver.java:881)
    at com.example.musicvibe.MainActivity.getAllAudio(MainActivity.kt:147)
    at com.example.musicvibe.MainActivity.initializeLayout(MainActivity.kt:129)
    at com.example.musicvibe.MainActivity.onCreate(MainActivity.kt:40)
    at android.app.Activity.performCreate(Activity.java:7916)
    at android.app.Activity.performCreate(Activity.java:7903)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3285)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3459) 
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2046) 
    at android.os.Handler.dispatchMessage(Handler.java:107) 
    at android.os.Looper.loop(Looper.java:225) 
    at android.app.ActivityThread.main(ActivityThread.java:7564) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) 

MusicData class

package com.example.musicvibe

data class MusicData(
val id:String,
val title:String,
val album:String,
val artist: String,
val duration:Long=0,
val path:String
)
James Z
  • 12,209
  • 10
  • 24
  • 44
  • Typos, presumably. Looks like `MediaStore.Audio.Media.DATE_ADDED + "DEC"` in the `query()` call is meant to be `MediaStore.Audio.Media.DATE_ADDED + " DESC"`. Note both the additional space, and the spelling correction. – Mike M. Dec 27 '21 at 06:27
  • Thank you Mike, it was spelling error now i am able to run application but here is another issue that my madia files are not showing, what can be the solution here – Birendraa sharmaa Dec 27 '21 at 06:49
  • i am using my personal andorid device for test the app – Birendraa sharmaa Dec 27 '21 at 06:51
  • That's too broad a problem statement. There are multiple different things that could cause that. You'll need to do some debugging to see exactly which part is not working as expected. – Mike M. Dec 27 '21 at 06:53

0 Answers0