2015-12-11 4 views
0

im Создание приложения, в котором im загружает рингтон с сервера и сохраняет в sdcard/download и устанавливается как сигнал тревоги, уведомление, мелодия звонка и контактный тон, но когда я его устанавливаю, он не устанавливается как контакт и мелодия звонка но уведомление, сигнал тревоги устанавливается где ошибка в моем коде, во-вторых через/SDCard/загрузки/тонов не сохранить в Рима мобильном телефоне во время через/Скачать/Мелодия и контактный тон не установлен Программно

ringtone.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         String path = Environment.getExternalStorageDirectory().getPath() + "/Download/" + title; 
         setRingtone(path); 
         Toast.makeText(con, "set successfully as ringtone"+title, Toast.LENGTH_LONG).show(); 
         dialog.dismiss(); 

        } 
       }); 

       alaram.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         String path = Environment.getExternalStorageDirectory().getPath() + "/Download/" + title; 
         setalaram(path); 
         Toast.makeText(con, "set successfully as alaram", Toast.LENGTH_LONG).show(); 
         dialog.dismiss(); 

        } 
       }); 

       notification.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         String path = Environment.getExternalStorageDirectory().getPath() + "/Download/" + title; 
         setnotication(path); 
         Toast.makeText(con, "set successfully as notification", Toast.LENGTH_LONG).show(); 
         dialog.dismiss(); 

        } 
       }); 
       /* contact.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
        String path = Environment.getExternalStorageDirectory().getPath() + "/Download/" + title; 
         Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
         startActivityForResult(intent, PICK_CONTACT); 
         dialog.dismiss(); 
        } 
       });*/ 

      } 
     }); 
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     switch (requestCode) 
     { 
      case 1: 
       if (resultCode == Activity.RESULT_OK) 
        urlRingTone = String.valueOf(data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI)); 
        break; 
       case 2: 
         Uri contactData = data.getData(); 
         Cursor c = managedQuery(contactData, null, null, null, null); 
         if (c.moveToFirst()) { 
          String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
          String path = Environment.getExternalStorageDirectory().getPath() + "/Download/" + title; 
          //setContact(path); 
         } 

      } 

     } 
public void setalaram(String path) { 


     File k = new File(path); // path is a file to /sdcard/media/ringtone 

     ContentValues values = new ContentValues(); 
     values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath()); 
     values.put(MediaStore.MediaColumns.TITLE, title); 
     values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3"); 
     values.put(MediaStore.MediaColumns.SIZE, k.length()); 
     values.put(MediaStore.Audio.Media.IS_ALARM, true); 

     Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath()); 
     getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + k.getAbsolutePath() + "\"", null); 
     Uri newUri = getContentResolver().insert(uri, values); 

     RingtoneManager.setActualDefaultRingtoneUri(Play.this, 
       RingtoneManager.TYPE_ALARM, newUri); 
    } 

    public void setnotication(String path) { 


     File k = new File(path); // path is a file to /sdcard/media/ringtone 

     ContentValues values = new ContentValues(); 
     values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath()); 
     values.put(MediaStore.MediaColumns.TITLE, title); 
     values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3"); 
     values.put(MediaStore.MediaColumns.SIZE, k.length()); 
     values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true); 

     Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath()); 
     getContentResolver().delete(uri, MediaStore.MediaColumns.DATA + "=\"" + k.getAbsolutePath() + "\"", null); 
     Uri newUri = getContentResolver().insert(uri, values); 

     RingtoneManager.setActualDefaultRingtoneUri(Play.this, 
       RingtoneManager.TYPE_NOTIFICATION, newUri); 
    } 

ответ

0

Помните, что для мелодии необходимо использовать: RingtoneManager.TYPE_RINGTONE

RingtoneManager.setActualDefaultRingtoneUri(
    Play.this, 
    RingtoneManager.TYPE_RINGTONE, 
    newUri 
); 

и

values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false); 

Проверить это полный пример:

File k = new File(path, "Queen-BohemianRhapsody.mp3"); 

ContentValues values = new ContentValues(); 
values.put(MediaStore.MediaColumns.DATA, k.getAbsolutePath()); 
values.put(MediaStore.MediaColumns.TITLE, "Bohemian Rhapsody"); 
values.put(MediaStore.MediaColumns.SIZE, 188080); 
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3"); 
values.put(MediaStore.Audio.Media.ARTIST, "Queen"); 
values.put(MediaStore.Audio.Media.DURATION, 230); 
values.put(MediaStore.Audio.Media.IS_RINGTONE, true); 
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, false); 
values.put(MediaStore.Audio.Media.IS_ALARM, false); 
values.put(MediaStore.Audio.Media.IS_MUSIC, false); 

Uri uri = MediaStore.Audio.Media.getContentUriForPath(k.getAbsolutePath()); 
Uri newUri = this.getContentResolver().insert(uri, values); 

RingtoneManager.setActualDefaultRingtoneUri(myActivity, 
    RingtoneManager.TYPE_RINGTONE, newUri); 
+0

спасибо за ответ, так что я уже использую этот код в нашем приложении, но не один набор в качестве мелодии звонка и контактного тона !! – Meerz

+0

, когда я устанавливаю индивидуальную мелодию звонка в качестве мелодии звонка, когда входящий звонок не звонит – Meerz

Смежные вопросы