我想知道如何使用以下代码链接Intent myIntent = new Intent(context, DoSomething.class)
.setAction(getString(R.string.action_do_something));
。我无法在我的应用程序中链接它:XCode总是警告我,我使用的方法是未知的。我知道使用限制,仅在内核扩展中:I / O Kit使用面向对象的编程模型,在受限制的子集中实现C ++ ,以促进增加代码重用,如I/O Kit Overview中所述。如果你能帮助我,我将非常高兴能够学习。
IOKit.framework
答案 0 :(得分:1)
这些类型和功能都在Kernel.framework
中定义。除非您正在构建内核扩展,否则这不是您想要的。用于访问IOKit的用户空间API是通过IOKit.framework
提供的C API(IOKitLib)。
您希望IORegistryEntryFromPath()
和IORegistryEntryCreateCFProperty()
功能在用户空间中获取所需信息。
(两者都在<IOKit/IOKitLib.h>
中声明,请确保将IOKit.framework添加到目标的库列表中以进行链接。如果您的应用不支持,您可能还需要链接CoreFoundation.framework。 #39; t已经链接到它或Cocoa.framework。)
答案 1 :(得分:1)
在“CFMutableDictionaryRef”与“IORegistryEntryFromPath”,“IORegistryEntryCreateCFProperties”和“CFDictionaryApplyFunction”的使用之下,你得到“平台”中包含的块,它已经用转换字符串或数据对每个元素进行了排序。这是ioreg的存在.c以非常轻的形式出现
void getsystemuuid()
{
io_registry_entry_t service = 0;
struct options options;
CFMutableDictionaryRef properties = 0;
kern_return_t status = KERN_SUCCESS;
service = IORegistryEntryFromPath(kIOMasterPortDefault, "IODeviceTree:/efi/platform");
status=IORegistryEntryCreateCFProperties( service,&properties,kCFAllocatorDefault,kNilOptions );
if (status)
goto sortie;
CFDictionaryApplyFunction(properties, showitem,&options.depth);
sortie:
CFRelease(properties);
IOObjectRelease(service);
}