3

アプリ内から 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を使用する必要があることに意味がありません。

誰かが私に少し説明をしてくれたり、どこかに私をリンクしてくれたりしてくれたら、私はこれを本当に理解し、この問題を回避することができます.

4

2 に答える 2

0

私はあなたの問題が道を譲っていないと思います。したがって、この行の後にファイルが実際に存在するかどうかを確認することから始めることをお勧めします

 File ringPath = new File(path, filename);

使用コード:

boolean b=ringPath.exists();

それがtrueを返す場合、それからuriを取得できます。次に、エラーがないと思った後、コードに表示されます。

于 2011-02-04T05:58:25.347 に答える
0

[Menu] -> [Settings] -> [Applications] -> [Development] に移動して電話のデバッグを停止し、ボックスのチェックを外します。行ってもいい。

于 2011-02-24T04:39:00.327 に答える