1

我知道这个答案已经给出了很多次,这是一个非常简单的问题,但有些我无法完成它。但相信我,我尝试了许多其他不同的解决方案,但没有一个对我有用,

我正在尝试将音频文件设置到没有存储卡的LeEco Le2设备,我也在尝试将其他文件从代码复制到设备,但每次它不复制任何内容时,我在模拟器 (Genymotion) 上尝试的代码相同然后它工作正常我没有得到实际问题是什么以及确切的位置。

我正在尝试使用这么多不同的代码但没有成功,我从 SO 和其他论坛获得了这么多链接,但是任何代码在链接代码下面都不能正常工作,这正是我需要的,我也试过了,但这也不能将音频文件设置为铃声.

下面是我的代码。

public boolean saveas(int ressound) {
        InputStream fIn = getBaseContext().getResources()
                .openRawResource(this.songidlist[this.currenttrack].intValue());
        try {
            byte[] buffer = new byte[fIn.available()];
            fIn.read(buffer);
            fIn.close();
            String path = Environment.getExternalStorageDirectory() + "/sounds/media/";
            String filename = "Ring.mp3";
            if (!new File(path).exists()) {
                new File(path).mkdirs();
            }
            try {
                FileOutputStream save = new FileOutputStream(new StringBuilder(String.valueOf(path)).append(filename).toString());
                save.write(buffer);
                save.flush();
                save.close();
                sendBroadcast(new Intent("android.intent.action.MEDIA_SCANNER_SCAN_FILE", Uri.parse("file://" + path + filename)));
                File k = new File(path, filename);
                ContentValues values = new ContentValues();
                values.put("_data", k.getAbsolutePath());
                values.put(PlusShare.KEY_CONTENT_DEEP_LINK_METADATA_TITLE, "RingTone");
                values.put("mime_type", "audio/mp3");
                values.put("artist", "Test");
                values.put("is_ringtone", Boolean.valueOf(true));
                values.put("is_notification", Boolean.valueOf(false));
                values.put("is_alarm", Boolean.valueOf(false));
                values.put("is_music", Boolean.valueOf(false));
                Uri uri = Media.getContentUriForPath(k.getAbsolutePath());
                getContentResolver().delete(uri, "_data=\"" + k.getAbsolutePath() + "\"", null);
                RingtoneManager.setActualDefaultRingtoneUri(this, 1, getContentResolver().insert(uri, values));
                return true;
            } catch (FileNotFoundException e) {
                e.printStackTrace();
                return false;
            } catch (IOException e2) {
                e2.printStackTrace();
                return false;
            }
        } catch (IOException e3) {
            return false;
        }
    }

得到以下异常

09-12 01:36:58.279: W/System.err(2474): java.io.FileNotFoundException: /storage/emulated/0/sounds/media/Ring.mp3: open failed: ENOENT (No such file or directory)
09-12 01:36:58.280: W/System.err(2474):     at libcore.io.IoBridge.open(IoBridge.java:452)
09-12 01:36:58.280: W/System.err(2474):     at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
09-12 01:36:58.280: W/System.err(2474):     at java.io.FileOutputStream.<init>(FileOutputStream.java:127)
09-12 01:36:58.280: W/System.err(2474):     at java.io.FileOutputStream.<init>(FileOutputStream.java:116)
09-12 01:36:58.280: W/System.err(2474):     at com.appsworld.shivringtone.SplashActivity.saveas(SplashActivity.java:307)
09-12 01:36:58.280: W/System.err(2474):     at com.appsworld.shivringtone.SplashActivity$C02832$C02821.onClick(SplashActivity.java:166)
09-12 01:36:58.280: W/System.err(2474):     at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:1108)
09-12 01:36:58.280: W/System.err(2474):     at android.widget.AdapterView.performItemClick(AdapterView.java:310)

请帮我解决。我也在清单文件中给予了适当的许可。我已经从市场下载了一些应用程序并尝试在我的设备上运行,它运行良好,但我不知道为什么在我的情况下这段代码不起作用。是因为我没有 SDCARD 还是别的什么?

4

0 回答 0