每次将音频文件设置为铃声都会失败

时间:2016-09-12 05:22:05

标签: android audio ringtone ringtonemanager

我知道这个答案给了很多次,这是一个非常简单的问题,但有些我怎么也做不到。但相信我,我尝试了许多其他不同的解决方案,但没有一个对我有用,

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

我正在尝试使用这么多不同的代码而没有成功,我从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或其他东西吗?

0 个答案:

没有答案