【问题标题】:Can't update contact details in android using code无法使用代码更新 android 中的联系方式
【发布时间】:2010-04-10 10:18:24
【问题描述】:

我正在尝试使用此代码更新/更改联系人铃声:

ContentValues values = new ContentValues();
values.put(ContactsContract.Data.CUSTOM_RINGTONE, "D:/TempDownloads/BurpSounds/Alex.wav");

getContentResolver().update(ContactsContract.Contacts.CONTENT_URI, values , "DISPLAY_NAME = 'Ani'", null);

我收到消息:“应用程序已意外停止”

我的代码有什么问题,我该怎么做?

谢谢

我设法使用 logcat 和 ddms 这里是日志:

04-10 13:47:45.419: ERROR/AndroidRuntime(399): Caused by: java.lang.SecurityException: Permission Denial: writing com.android.providers.contacts.ContactsProvider2 uri content://com.android.contacts/contacts from pid=399, uid=10025 requires android.permission.WRITE_CONTACTS
04-10 13:47:45.419: ERROR/AndroidRuntime(399):     at android.os.Parcel.readException(Parcel.java:1218)
04-10 13:47:45.419: ERROR/AndroidRuntime(399):     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:160)
04-10 13:47:45.419: ERROR/AndroidRuntime(399):     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114)
04-10 13:47:45.419: ERROR/AndroidRuntime(399):     at android.content.ContentProviderProxy.update(ContentProviderNative.java:532)
04-10 13:47:45.419: ERROR/AndroidRuntime(399):     at android.content.ContentResolver.update(ContentResolver.java:737)
04-10 13:47:45.419: ERROR/AndroidRuntime(399):     at com.example.helloandroid.HelloAndroid.getContactList(HelloAndroid.java:36)
04-10 13:47:45.419: ERROR/AndroidRuntime(399):     at com.example.helloandroid.HelloAndroid.onCreate(HelloAndroid.java:19)
04-10 13:47:45.419: ERROR/AndroidRuntime(399):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-10 13:47:45.419: ERROR/AndroidRuntime(399):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
04-10 13:47:45.419: ERROR/AndroidRuntime(399):     ... 11 more

我使用的路径:Environment.getExternalStorageDirectory().getPath() + "/Alex.wav"

【问题讨论】:

    标签: android ringtone


    【解决方案1】:

    首先,您应该使用adb logcat、DDMS 或 Eclipse 中的 DDMS 透视图来检查与“应用程序已意外停止”相关的 Java 堆栈跟踪,这样您就可以看到出了什么问题。

    在这种情况下,您的 Android 手机和 Android 模拟器都不会有 D: 驱动器,因为 Android 不是 Windows。

    【讨论】:

    • 在设备或模拟器上,例如在 SD 卡上。
    • 我设法将文件放入 sdcard 但找不到路径?你知道sdcard的路径是什么吗?我还使用 ddms 和 logcat 获得了日志:它需要太多字符,所以我把它放在主要问题中。请看一下。
    • 错误信息告诉你你的问题是什么:你需要android.permission.WRITE_CONTACTS权限。 SD 卡位于Environment.getExternalStorageDirectory() 提供的路径中。
    • 谢谢它现在可以工作了 :) 但铃声没有循环播放,为什么会这样,我怎样才能让它循环播放?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 2023-04-08
    • 2013-03-30
    相关资源
    最近更新 更多