我正在開發一個應用程序,列表視圖中列出了特定的文件。現在,當用戶點擊列表中的項目時,所選文件應該在其默認處理程序中打開。例如:如果用戶點擊列表中的歌曲,歌曲必須開始在用戶設備上配置的默認播放器中播放,以此類推以用於圖像,文檔等。如何直接從ListView中打開列出的文件android
我已經寫下以下代碼以加載所有列表中的音頻文件(暫時)。現在我卡在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);
現在的音樂播放器推出。但是,我如何告訴音樂播放器只播放特定文件?
我試過ACTION_MAIN,它會導致異常。 – Bolton 2013-05-12 08:43:20