私はコルドバ/アンドロイドを使用して連絡先に着信音を設定するためのプラグインを作成しているよのためにコルドバに設定していないが、私はしばらくの間、次のコードをいじりの後に任意の運を持っていなかった。問い合わせ着メロは、Android
コルドバ - プラグインの連絡先 コルドバ - プラグインRingtoneSelector
私は、コンタクトIDと着メロのパスを取得すると:基本的に、私は連絡先データや着信音のパスを取得するには、以下のプラグインを使用してい
package com.mypackage.contactringtone;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.PhoneLookup;
import android.provider.ContactsContract.CommonDataKinds;
import android.provider.ContactsContract.CommonDataKinds.*;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.LOG;
import org.json.JSONArray;
import org.json.JSONException;
import java.lang.Object;
import android.net.Uri;
import java.io.File;
import android.content.Context;
import android.content.ContentValues;
import android.database.Cursor;
import android.provider.MediaStore;
public class ContactRingtone extends CordovaPlugin {
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if ("set_ringtone".equals(action)) {
String contact_id = args.getString(0);
String phone_number = args.getString(1);
String ringtone_path = args.getString(2);
int my_contact_id = Integer.parseInt(contact_id);
Context context = cordova.getActivity();
Uri contact_data = ContactsContract.Contacts.CONTENT_URI;
File ringtone_file = new File(ringtone_path);
String[] projection = new String[] {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME,
ContactsContract.Contacts.HAS_PHONE_NUMBER
};
String selection = ContactsContract.CommonDataKinds.Phone._ID + "='" + my_contact_id + "'";
Cursor local_cursor = context.getContentResolver().query(contact_data, projection, selection, null, null);
local_cursor.move(1);
String this_id = local_cursor.getString(local_cursor.getColumnIndexOrThrow("_id"));
Uri local_uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, this_id);
ContentValues local_content_values = new ContentValues();
local_content_values.put(ContactsContract.Data.RAW_CONTACT_ID, my_contact_id);
local_content_values.put(ContactsContract.Data.CUSTOM_RINGTONE, ringtone_file.getAbsolutePath() + "/" + contact_id + ".ogg");
context.getContentResolver().update(local_uri, local_content_values, null, null);
callbackContext.success("Ringtone set for: " + my_contact_id + " - " + phone_number + " - " + ringtone_path);
return true;
}
callbackContext.error("Invalid action: " + action);
return false;
}
}
、私はそれらを私のcに送るustom pluginを引数として使用します。連絡先IDの例は「1」です。着信音のパスの例は "content:// media/internal/audio/media/34"です。
返されたエラーは表示されず、成功コールバックはJava関数からデータを正しく返します。したがって、私は正しく何かを照会していないと仮定しています。
私はかなりJavaに新しいので、このコードは混乱になっています。上記のコードで、連絡先に着信音を正しく設定できるようにするためには、何を更新する必要がありますか?前もって感謝します。