将音乐文件设置为来电铃声,短信铃声以及联系人铃声
http://www.eoeandroid.com/thread-263749-1-1.html
好久没有发帖了,这周做了个将音乐设置为来电铃声,短信铃声,联系人铃声这些小功能!额,具体说说方法吧
//add by Aaron
case R.id.ring_tone://来电铃声
FileInfo fileInfo = mAdapter.getFirstCheckedFileInfoItem();
if (fileInfo != null) {
String tone_path = fileInfo.getFileAbsolutePath();
Utils.setMyRing(FileManagerOperationActivity.this, tone_path);
}
break;
//add by Aaron
case R.id.ring_message://短信铃声
FileInfo fileInfos = mAdapter.getFirstCheckedFileInfoItem();
if (fileInfos != null) {
String message_path =fileInfos.getFileAbsolutePath();
Utils.setMyMessage(FileManagerOperationActivity.this, message_path);
};
break;
//add by Aaron
case R.id.ring_contact://联系人铃声
Intent intent = new Intent("android.intent.action.contacts.list.PICKMULTICONTACTS");
intent.setType(Contacts.CONTENT_TYPE);
startActivityForResult(intent, REQUEST_CODE_TEXT_VCARD);
break;
default:
return false;
}
return true;
}
//add by Aaron
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case REQUEST_CODE_TEXT_VCARD:
if (data != null) {
long[] contactIds = data.getLongArrayExtra("com.mediatek.contacts.list.pickcontactsresult");
FileInfo fileInfo = mAdapter.getFirstCheckedFileInfoItem();
String path = fileInfo.getFileAbsolutePath();
for(int i = 0; i< contactIds.length; i++)
{
//Uri contactUri = Uri.parse("content://com.android.contacts/raw_contacts/"+contactIds );
Utils.setMyContact(FileManagerOperationActivity.this, path, contactIds);
}
} else {
}
break;
default:
break;
}
}//这段代码是加在文件管理夹apk下面的,就是三个menu选项,分辨对应设置来电铃声,短信铃声以及联系人铃声
/* Copyright Statement:
*
*add by Aaron
*/
package com.mediatek.filemanager;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
import java.io.File;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.media.RingtoneManager;
import android.net.Uri;
import android.content.Intent;
import android.provider.MediaStore;
import android.provider.Settings;
import android.widget.Toast;
public class Utils {
//设置为短信铃声
static void setMyMessage(Context context, String path) {
File sdfile = new File(path);
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, sdfile.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, sdfile.getName());
values.put(MediaStore.MediaColumns.SIZE, sdfile.length());
// values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
values.put(MediaStore.Audio.Media.IS_RINGTONE, false);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
values.put(MediaStore.Audio.Media.IS_ALARM, false);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(path);
Uri newUri = context.getContentResolver().insert(uri, values);
Intent i = new Intent("com.android.mms.change.ring");
i.putExtra("newUri", newUri.toString());
context.sendBroadcast(i);//发一个广播到短信模块,让短信模块自己修改自己的SharedPreferences
Toast.makeText(context, "setMessage-----"+sdfile.getName()+"---------------->",
Toast.LENGTH_SHORT).show();
}
//设置为联系人铃声
static void setMyContact(Context context, String path, long id){
File sdfile = new File(path);
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, sdfile.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, sdfile.getName());
values.put(MediaStore.MediaColumns.SIZE, sdfile.length());
// values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/*");
values.put(MediaStore.Audio.Media.IS_RINGTONE, false);
values.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
values.put(MediaStore.Audio.Media.IS_ALARM, false);
values.put(MediaStore.Audio.Media.IS_MUSIC, false);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(path);
System.out.println("uri----------------------->"+uri.toString());
Uri newUri = context.getContentResolver().insert(uri, values);
System.out.println("newUri----------------------->"+newUri.toString());
ContentValues contactvalues = new ContentValues();
contactvalues.put(Contacts.CUSTOM_RINGTONE, newUri.toString());
context.getContentResolver().update(Contacts.CONTENT_URI,
contactvalues, Contacts._ID + " = " + String.valueOf(id), null);
Toast.makeText(context, "Contact-------"+sdfile.getName()+"-------------->",
Toast.LENGTH_SHORT).show();
}
//设置为来电铃声
static void setMyRing(Context context, String path) {
File filePath = new File(path);
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, filePath.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, filePath.getName());
values.put(MediaStore.Audio.Media.IS_RINGTONE, true);
Uri uri = MediaStore.Audio.Media.getContentUriForPath(filePath
.getAbsolutePath());
context.getContentResolver().delete(
uri,
MediaStore.MediaColumns.DATA + "=\""
+ filePath.getAbsolutePath() + "\"", null);
Uri newUri = context.getContentResolver().insert(uri, values);
RingtoneManager.setActualDefaultRingtoneUri(context,
RingtoneManager.TYPE_RINGTONE, newUri);
Toast.makeText(context, "宸插皢"+filePath.getName()+"璁句负鎵嬫満閾冨0", Toast.LENGTH_SHORT).show();
}
}//这是一个类,注意了:设置短信铃声并非设置通知铃声哦.....看下图就明白了
好吧,破网络,图片传不上,用adb进入/data/data/com.android.mms/shared_prefs,然后cat com.android.mms_preferences.xml,也就是打开这个XML文件,你会看到类似如下东西
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="pref_key_ringtone">content://media/external/audio/media/196</string>//注意这行就是代表短信铃声的URI了
<string name="pref_key_mms_creation_mode">FREE</string>
<boolean name="pref_key_enable_notifications" value="true" />
<string name="pref_key_sms_save_location">Phone</string>
<string name="pref_key_mms_size_limit">300</string>
<string name="pref_key_sms_input_mode">Automatic</string>
<boolean name="CmccMmsUiMode" value="false" />
<string name="pref_key_mms_priority">Normal</string>
<boolean name="checked_message_limits" value="true" />
<boolean name="pref_key_mms_auto_retrieval" value="true" />
<boolean name="pref_key_wappush_enable" value="true" />
<int name="CmccSimCardInfo" value="0" />
也就是你只要修改了<string name="pref_key_ringtone">content://media/external/audio/media/196</string>就修改成功了,具体看上面的代码
设置联系人铃声就不说了,调用联系人apk,得到id(是long型的),然后修改数据库,搞定,上面代码应该是有小bug的,发现的记得回复哈! 注:本人已经测试成功了的(所以不用怀疑)
将音乐文件设置为来电铃声,短信铃声以及联系人铃声相关推荐
- Android FileManager 中点击音乐文件设置为来电铃声 M
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- android添加或修改默认来电、短信、闹钟、提示音铃声
1.修改默认来电.短信.闹钟.提示音铃声 devices/sprd/sharkle/sn15_64v8_go/sn15_64v8_go.mk... PRODUCT_PROPERTY_OVERRIDES ...
- 在Emulator上模拟来电、短信等 效果
在Android Studio中,当我们需要模拟收到短信.或模拟来电时,虽然AS里面有一个自带Android Device Monitor可以调试,但是当我们启动它的时候,往往需要将AS与模拟器断开, ...
- 社恐人必备逃跑神器-模拟来电+模拟短信+模拟钱包+模拟关机
小伙伴们注意:公众号的推送机制不再按照时间前后推送了,微信公众号信息流乱序.君哥建议大家把科技毒瘤君公众号置顶(设为星标⭐),以便第一时间看到推送,非常感谢~,方法如下图: 如果你是一个具有社交恐惧症 ...
- android 短信数据库在哪个文件夹,安卓手机的短信备份后存到了哪个文件夹下
打开备份短信的方法: 1.通过电脑找回手机短信内容的最基本思路,即将保存手机短信容的数据库文件传输到电信上,用相关手机信看工具进找回,对此需要借助第三方ROOt工获取手机ROOT权限. 2.并非所有手 ...
- 华为手机备忘录怎样设置每个月12号短信提醒要做的事
华为手机上可以使用备忘录来记事和提醒,一些功能强大且好用的备忘录工具,比如云便签,不仅能设置定时提醒,还可开启每月指定时间自动重复提醒及短信同步提醒备忘录事项,以短信的形式在每月发送备忘录提醒通知信息 ...
- 小米手机因为默认权限设置电话拨号,短信等广播无法使用的解决办法
今天早上写一个拦截电话拨号的广播,在写完代码后运行测试.开启应用后拨打电话(程序中默认为接收到1500这个拨号数字后启动Activity).可是在我的红米手机上运行后,Logcat一点反应都没有,电话 ...
- 如何设置快递送达时短信提醒
在查询快递的时候,你是不是还在自己手动到官网查,然后查询后还要一个个以短信的方式发送给别人呢?这样的方法太多繁琐,今天小编给大家分享一个新的查询技巧,它不仅能同时查询多个快递物流,还可对物流进行跟踪提 ...
- android 模拟器监听短信,android模拟器用命令和DDMS模拟来电和短信
以下方法均测试成功 一.用命令模拟 (一).模拟来电 1.打开命令行cmd,输入telnet 回车. 2.然后输入 o localhost 5554 回车,连到Emulator上. 3.输入gsm c ...
最新文章
- centos7下selinux永久关闭
- 分享 C++命名空间的解释
- 【UEditor】百度编辑器插入video视频
- java 中的 Scanner
- magicAjax问题
- C语言描述栈的实现及操作(数组实现)
- Netty 5用户指南
- php外壳函数,php 方法笔记
- python处理多个excel数据_python 数据分析基础 day8-pandas读写多个excel文件
- 谨以此送给所有单身的MM
- 大数据技术成功案例和趋势 2021-25
- 关于keeplive
- 新手电脑硬件软件故障解答(二)
- magick++配置
- 什么是SVC?AVC和SVC有什么区别
- HTML颜色名称和颜色代码表
- AI带你走进P图新时代
- 微信小程序重新发起请求加载页面
- 一个 npm 包的坎坷“续命”之生
- 2020中兴开发岗笔试题
热门文章
- java桌球教程视频,Java桌球小游戏1 - osc_wov79fj7的个人空间 - OSCHINA - 中文开源技术交流社区...
- IPv6协议的技术分析
- Java基础—如何记录日志(四)
- day36 XSS跨站MXSSUXSSFlashXSSPDFXSS
- 基于MATLAB的语音信号处理系统的设计
- 【C++】继承与多态
- python基于yolov3实现的手势控制音乐播放器
- Multiple Cameras
- C++字符串常量总结
- 指针指向字符串常量和给字符数组赋值字符串常量的本质