アプリ内から SD カードに保存したサウンドから着信音を設定しようとしています。これについて見つけたすべての投稿を調べた後、私は近くにいると信じており、URI の権利を定義していません。
File ringPath = new File(path, filename);
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, ringPath.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, "temptitle");
values.put(MediaStore.MediaColumns.SIZE, ringPath.length());
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/ogg");
values.put(MediaStore.Audio.Media.ARTIST, "tempartist");
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
uri = Uri.fromFile(ringPath);
RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, uri);
通常、URI は次のように定義されます。
Uri uri = MediaStore.Audio.Media.getContentUriForPath(ringPath.getAbsolutePath());
Uri newUri = main.getContentResolver().insert(uri, values);
しかし、私はそのすべての要点をよく理解していませんでした.それは私にかなり厄介なエラーをもたらしました. それが必要な方法だと確信していますが、私のコードの uri は実際には適切なパスを返します (そして、私の誤用が原因で許可されている可能性があります)。仕事。正直なところ、パスを指定するのではなく、とにかくこれにURIを使用する必要があることに意味がありません。
誰かが私に少し説明をしてくれたり、どこかに私をリンクしてくれたりしてくれたら、私はこれを本当に理解し、この問題を回避することができます.