gpt4 book ai didi

android - 如何直接从 Android 中的 ListView 打开列出的文件

转载 作者:行者123 更新时间:2023-11-30 03:37:04 28 4
gpt4 key购买 nike

我正在开发一个应用程序,其中特定文件将在 ListView 中列出。现在,当用户单击列表中的项目时,所选文件应在其默认处理程序中打开。例如:如果用户单击列表中的歌曲,则该歌曲必须在用户设备上配置的默认播放器中开始播放,例如图像、文档等。

我已经编写了以下代码来加载列表中的所有音频文件(暂时)。现在我卡在了 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);

现在音乐播放器正在启动。但是我如何告诉音乐播放器只播放特定文件呢?

最佳答案

这是打开默认安卓浏览器的方式(取自here)

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

根据相同的逻辑,我发现了这个 Intent CATEGORY_APP_MUSIC .您需要将它与 ACTION_MAIN 一起使用.尝试一下,希望它对您有用。

关于android - 如何直接从 Android 中的 ListView 打开列出的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16505315/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com