我正在开发一个应用程序,其中特定文件将列在列表视图中。现在,当用户单击列表中的项目时,所选文件应在其默认处理程序中打开。例如:如果用户点击列表中的歌曲,则歌曲必须开始在用户设备上配置的默认播放器中播放,依此类推图像,文档等。
我编写了以下代码来加载列表中的所有音频文件(暂时)。现在我被困在了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);
现在音乐播放器正在发布。但是,我如何告诉音乐播放器只播放特定文件?
答案 0 :(得分:1)
这是打开默认Android浏览器(取自here)
的方法Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
startActivity(browserIntent);
同样的逻辑我发现了这个意图CATEGORY_APP_MUSIC。您需要将其与ACTION_MAIN一起使用。试试吧我希望它对你有用。
答案 1 :(得分:0)
试试这个:
Intent notificationIntent = new Intent(Intent.ACTION_VIEW, fileUri);
startActivity(notificationIntent);