【问题标题】:Pick .mp3 file from sdcard in preferencescreen在偏好屏幕中从 sdcard 中选择 .mp3 文件
【发布时间】:2016-06-06 11:07:00
【问题描述】:

我如何从 android 偏好屏幕菜单中的 sdcard 中选择 mp3 文件..

这是我的偏好屏幕:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
        <PreferenceCategory android:title="@string/app_setting">

            <Preference android:title="@string/ChooseRingtone"
                android:key="sdPref" />

        </PreferenceCategory>
</PreferenceScreen>

这里是我的 SettingActivity:

public class SettingsActivity extends AppCompatPreferenceActivity{
      @Override
    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
        if(savedInstanceState == null){
            android.app.Fragment infoFragment = new MyPreferenceFragment();
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            ft.add(R.id.fragment_container, infoFragment);
            ft.commit();
        }
      public static class MyPreferenceFragment extends PreferenceFragment {

        private AppSettings settings;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.pref);

            Preference sdPrefs = findPreference("sdPref");
            sdPrefs.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
                @Override
                public boolean onPreferenceClick(Preference preference) {
                    return false;
                }
            });
        }
}

我不知道如何打开 sdcard 并从整个 sdcard 中仅选择 .mp3 扩展名文件。以及如果可能的话,如何将该 mp3 文件存储到我的资产/原始目录中

【问题讨论】:

    标签: android android-sharedpreferences filepicker preferencescreen


    【解决方案1】:

    尝试以下代码仅选择 mp3 文件,

           sdPrefs.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
                @Override
                public boolean onPreferenceClick(Preference preference) {
    
                     Intent intent_upload = new Intent();
                     //intent_upload.setType("audio/*"); // For All Audio Files
                     intent_upload.setType("audio/mp3"); // For only MP3 Files
                     intent_upload.setAction(Intent.ACTION_GET_CONTENT);
                     startActivityForResult(intent_upload,1);
                     return false;
                }
            });
    

    【讨论】:

    • 在 startActivityForResult 第二个参数不是整数
    • 它的字符序列
    • 第二个参数是唯一的id,用于检查你get得到的响应,一般是int,你可以把它当作先在top int PICK_SONG = 1声明,然后作为第二个参数传递,当你将在 onActivityResult 中获取结果,您需要匹配此标签才能正确响应。
    • 嘿,是否可以将选定的 mp3 文件存储到原始目录?
    • 不,你不能这样做,而不是你应该将文件路径存储在 db 或首选项中并使用它,它会减少内存并运行得更快。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多