我正在编写一个应用程序,用于在Android手机的SIM卡中写入联系人.我被困在添加电话号码的地方:发生异常,没有明显的原因.
这是一段代码.
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.provider.ContactsContract.RawContacts;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.RawContactsEntity;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.RawContacts.Entity;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.widget.TextView;
[...]
try{
// add a row to the RawContacts table
ContentValues values = new ContentValues();
values.put(RawContacts.ACCOUNT_TYPE, "com.anddroid.contacts.sim");
values.put(RawContacts.ACCOUNT_NAME, "SIM");
Uri rawContactUri = getContentResolver().insert(RawContacts.CONTENT_URI, values);
// get the ID of the newly-added line
long rawContactId = ContentUris.parseId(rawContactUri);
// add a "name" line to the Data table, linking it to the new …Run Code Online (Sandbox Code Playgroud) 我想将类序列化为XML,为其分配XML属性.片段:
[XmlType(TypeName = "classmy")]
public class MyClass2 : List<object>
{
[XmlAttribute(AttributeName = "myattr")]
public string Name { get; set; }
}
public class MyConst
{
public MyConst()
{
MyClass2 myClass2 = new MyClass2 { 10, "abc" };
myClass2.Name = "nomm";
XmlSerializer serializer = new XmlSerializer(typeof(MyClass2));
serializer.Serialize(Console.Out, myClass2);
}
}
Run Code Online (Sandbox Code Playgroud)
但是生成的XML看起来像这样
<?xml version="1.0" encoding="IBM437"?>
<classmy xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<anyType xsi:type="xsd:int">10</anyType>
<anyType xsi:type="xsd:string">abc</anyType>
</classmy>
Run Code Online (Sandbox Code Playgroud)
一切都很好,唯一的例外是myClass2.Name没有被序列化.我期待着一些东西
<classmy myattr="nomm" [...]>[...]</classmy>
Run Code Online (Sandbox Code Playgroud)
...为什么不是序列化的,它怎么可能?
我正在检查包含externals(svn:externals属性)的SVN存储库.
但是,显然,如果我使用--depth除了'infinity'以外的任何值,则不会下载外部.这是特别具有讽刺意味的,因为显然以后可以使用--set-depth排除和排除文件夹进行更新.
是否有可能选择性地检查并包括所有外部?
我正在尝试使用此查询来读取SIM卡上的联系人.
cur = managedQuery(Uri.parse("content://icc/adn")
,null
,null
,null
,null
);
Run Code Online (Sandbox Code Playgroud)
该应用程序具有READ_CONTACTS和WRITE_CONTACTS权限.然而,查询返回一个异常.
java.lang.NullPointerException
at android.os.Parcel.readException(Parcel.java:1224)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:160)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114)
at android.content.ContentProviderProxy.bulkQuery(ContentProviderNative.java:369)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:388)
at android.content.ContentResolver.query(ContentResolver.java:202)
at android.app.Activity.managedQuery(Activity.java:1502)
at com.example.delirious.delirio.onCreate(delirio.java:38)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2544)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2621)
at android.app.ActivityThread.access$2200(ActivityThread.java:126)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4595)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
怎么了?
我正在编写一个可执行文件,它使用dlopen()(Windows上的LoadLibrary())来动态加载共享库.共享库使用可执行文件中的符号.
在Windows中这是可能的.可执行文件可以导出符号:declspec(dllexport)和.def文件都可以.创建.exe时,链接器也会创建.lib文件("导入库"),因此DLL只需要链接该.lib.
在Linux中,这也是可能的.我在构建可执行文件时传递-Wl,-export_dynamic,以便导出其符号.
在Mac OS X上,而不是...... -Wl,-export_dynamic不起作用,但是有-Wl,-exported_symbols_list,<filename>其中<filename>是要导出的符号列表(一种更简单的.def文件版本).但是,构建共享库并不容易:链接器抱怨未解析的符号.
我尝试了一个hack:将可执行文件重命名为lib <executable>.dylib,当链接共享库时,我传递了-l <executable>.但它给出了错误"无法与主要可执行文件链接".
一般问题是Linux共享库可能有未解析的符号,而Windows和Mac OS X不允许它.但Windows有"导入库"来解决符号依赖的符号,而Mac OS X显然不会......
如何在Mac OS X上解决这个问题?是否存在等效的"导入库"(在创建.dll时由Windows链接器创建的存根库,因此,如果任何模块需要动态链接到.dll,它是否与"导入库"链接)?或其他一些解决方案?
我遇到了错误的符号解析问题.我的主程序用dlopen加载一个带dlopen的共享库和一个符号.程序和库都是用C语言库代码编写的
int a(int b)
{
return b+1;
}
int c(int d)
{
return a(d)+1;
}
Run Code Online (Sandbox Code Playgroud)
为了使它在64位机器上运行,-fPIC在编译时传递给gcc.
该计划是:
#include <dlfcn.h>
#include <stdio.h>
int (*a)(int b);
int (*c)(int d);
int main()
{
void* lib=dlopen("./libtest.so",RTLD_LAZY);
a=dlsym(lib,"a");
c=dlsym(lib,"c");
int d = c(6);
int b = a(5);
printf("b is %d d is %d\n",b,d);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果程序未使用-fPIC编译,则一切运行正常,但在使用-fPIC编译程序时,它会因分段错误而崩溃.调查导致发现崩溃是由于符号a的错误解决.无论是从库还是主程序(后者是通过在主程序中注释掉调用c()的行获得的),都会在调用a时发生崩溃.
调用c()本身时没有问题,可能是因为c()不是由库本身在内部调用,而a()既是库内部使用的函数,也是库的API函数.
编译程序时,一个简单的解决方法是不使用-fPIC.但这并不总是可行的,例如当主程序的代码必须在共享库本身时.另一种解决方法是将指针重命名为其他功能.但我找不到任何真正的解决方案.
用RTLD_NOW替换RTLD_LAZY没有帮助.