我正在开发一个应用程序,其中特定文件将列在列表视图中。现在,当用户单击列表中的项目时,所选文件应在其默认处理程序中打开。例如:如果用户点击列表中的一首歌曲,该歌曲必须在用户设备上配置的默认播放器中开始播放,以此类推,用于图像、文档等。
我编写了以下代码来加载列表中的所有音频文件(暂时)。现在我被困在 onClickListener 上。我不知道如何继续,所以当我单击列表中的文件时,它会开始在我的默认音乐播放器中播放。
package com.example.listviewexample;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class ListViewActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view);
String selection=MediaStore.Audio.Media.IS_MUSIC+ " != 0";
String projection[]={MediaStore.Audio.Media.TITLE};
Cursor cursor=this.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, selection, null, null);
final ListView listView=(ListView) findViewById(R.id.listview);
final ArrayList<String> arrayList=new ArrayList<String>();
while(cursor.moveToNext()){
arrayList.add(cursor.getString(0));
}
final StableArrayAdapter adapter=new StableArrayAdapter(this, android.R.layout.simple_list_item_1, arrayList);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@SuppressLint("NewApi")
@Override
public void onItemClick(AdapterView<?> parent, final View view, int position,
long id) {
final String item=(String) parent.getItemAtPosition(position);
Toast.makeText(getApplicationContext(), "Currently Selected Song:"+item, Toast.LENGTH_SHORT).show();
}
});
}
private class StableArrayAdapter extends ArrayAdapter<String>{
HashMap<String, Integer> mIdMap=new HashMap<String, Integer>();
public StableArrayAdapter(Context context, int textViewResourceId,List<String> objects) {
super(context, textViewResourceId,objects);
for(int i=0;i<objects.size();i++)
{
mIdMap.put(objects.get(i), i);
}
}
@Override
public long getItemId(int position) {
String item=getItem(position);
return mIdMap.get(item);
}
@Override
public boolean hasStableIds() {
return true;
}
}
}
编辑:根据我尝试以下代码的建议:
Intent intent=Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, Intent.CATEGORY_APP_MUSIC);
startActivity(intent);
现在音乐播放器正在启动。但是我如何告诉音乐播放器只播放特定文件?