2013-05-12 42 views
1

我正在開發一個應用程序,列表視圖中列出了特定的文件。現在,當用戶點擊列表中的項目時,所選文件應該在其默認處理程序中打開。例如:如果用戶點擊列表中的歌曲,歌曲必須開始在用戶設備上配置的默認播放器中播放,以此類推以用於圖像,文檔等。如何直接從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); 

現在的音樂播放器推出。但是,我如何告訴音樂播放器只播放特定文件?

回答

1

這是你如何打開一個默認的Android瀏覽器(從here拍攝)

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); 
startActivity(browserIntent); 

Falowing我發現這個意向CATEGORY_APP_MUSIC相同的邏輯。您需要使用ACTION_MAIN。試試吧,我希望它會爲你工作。

+0

我試過ACTION_MAIN,它會導致異常。 – Bolton 2013-05-12 08:43:20

0

試試這個:

Intent notificationIntent = new Intent(Intent.ACTION_VIEW, fileUri);       
    startActivity(notificationIntent); 
相關問題