当前位置: 编程技术>移动开发
本页文章导读:
▪你的情窦为哪位高手开 你的情窦为谁开? ......
▪ Caused by: java.lang.SecurityException: Permission Denial: reading com.androi. Caused by: java.lang.SecurityException: Permission Denial: reading com.androi... 本文出自:http://androidkaifa.com/thread-2614-1-1.html
欢迎转载,转载请注明出自:安卓开发网
在网络上找了一段代码运行.........
▪ NSInvocation运用示例 NSInvocation使用示例一、概述
在 iOS中可以直接调用 某个对象的消息 方式有2种
第一种方式是使用NSObject类提供的performSelector系列方法
还有一种方式就是使用NSInvocation进行动态运行时的消息.........
[1]你的情窦为哪位高手开
来源: 互联网 发布时间: 2014-02-18
你的情窦为谁开?
[2] Caused by: java.lang.SecurityException: Permission Denial: reading com.androi.
来源: 互联网 发布时间: 2014-02-18
Caused by: java.lang.SecurityException: Permission Denial: reading com.androi...
12-18 07:12:34.232: E/AndroidRuntime(23763): FATAL EXCEPTION: main
12-18 07:12:34.232: E/AndroidRuntime(23763): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.comtacts.chuangheshiji/com.comtacts.chuangheshiji.MainActivity}: java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.ContactsProvider2
uri content://com.android.contacts/data/phones from pid=23763, uid=10036 requires android.permission.READ_CONTACTS
12-18 07:12:34.232: E/AndroidRuntime(23763): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
12-18 07:12:34.232: E/AndroidRuntime(23763): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
12-18 07:12:34.232: E/AndroidRuntime(23763): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
12-18 07:12:34.232: E/AndroidRuntime(23763): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
12-18 07:12:34.232: E/AndroidRuntime(23763): at android.os.Handler.dispatchMessage(Handler.java:99)
12-18 07:12:34.232: E/AndroidRuntime(23763): at android.os.Looper.loop(Looper.java:123)
12-18 07:12:34.232: E/AndroidRuntime(23763): at android.app.ActivityThread.main(ActivityThread.java:4627)
12-18 07:12:34.232: E/AndroidRuntime(23763): at java.lang.reflect.Method.invokeNative(Native Method)
12-18 07:12:34.232: E/AndroidRuntime(23763): at java.lang.reflect.Method.invoke(Method.java:521)
12-18 07:12:34.232: E/AndroidRuntime(23763): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-18 07:12:34.232: E/AndroidRuntime(23763): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-18 07:12:34.232: E/AndroidRuntime(23763): at dalvik.system.NativeStart.main(Native Method)
12-18 07:12:34.232: E/AndroidRuntime(23763): Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.ContactsProvider2 uri content://com.android.contacts/data/phones from pid=23763, uid=10036 requires android.permission.READ_CONTACTS
12-18 07:12:34.232: E/AndroidRuntime(23763): at android.os.Parcel.readException(Parcel.java:1247)
12-18 07:12:34.232: E/AndroidRuntime(23763): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:160)
12-18 07:12:34.232: E/AndroidRuntime(23763): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114)
12-18 07:12:34.232: E/AndroidRuntime(23763): at android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:330)
12-18 07:12:34.232: E/AndroidRuntime(23763): at android.content.ContentProviderProxy.query(ContentProviderNative.java:366)
12-18 07:12:34.232: E/AndroidRuntime(23763): at android.content.ContentResolver.query(ContentResolver.java:245)
12-18 07:12:34.232: E/AndroidRuntime(23763): at com.comtacts.chuangheshiji.MainActivity.getPhoneContacts(MainActivity.java:92)
12-18 07:12:34.232: E/AndroidRuntime(23763): at com.comtacts.chuangheshiji.MainActivity.onCreate(MainActivity.java:68)
12-18 07:12:34.232: E/AndroidRuntime(23763): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-18 07:12:34.232: E/AndroidRuntime(23763): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
12-18 07:12:34.232: E/AndroidRuntime(23763): ... 11 more
复制代码
看Log信息大家可以看知道是为什么了,是因为我们没在功能配置文件中添加读取还写入联系人的权限,所以解决这问题我只需要加入相应的权限即可
如果是需要添加读取的权限则是:
<manifest>.... <uses-permission android:name="android.permission.READ_CONTACTS" /></manifest>如果是要写入的权限则是:
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
本文出自:http://androidkaifa.com/thread-2614-1-1.html
欢迎转载,转载请注明出自:安卓开发网
在网络上找了一段代码运行一下,出现下面的错误:如果是需要添加读取的权限则是:
<manifest>.... <uses-permission android:name="android.permission.READ_CONTACTS" /></manifest>如果是要写入的权限则是:
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
[3] NSInvocation运用示例
来源: 互联网 发布时间: 2014-02-18
NSInvocation使用示例
一、概述
2、执行实例方法
一、概述
在 iOS中可以直接调用 某个对象的消息 方式有2种
还有一种方式就是使用NSInvocation进行动态运行时的消息分发,动态的执行方法,相信大家一定经常使用NSObject类提供的performSelector系列方法,在这里就不再对此进行描述了,今天主要是分享一下使用NSInvocation动态执行方法。
demo代码如下:
- (void)testClassMethod{
NSString *string = nil;
//初始化NSMethodSignature对象
NSMethodSignature *sig = [NSString methodSignatureForSelector:@selector(stringWithString:)];
//初始化NSInvocation对象
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:sig];
//设置执行目标对象
[invocation setTarget:[NSString class]];
//设置执行的selector
[invocation setSelector:@selector(stringWithString:)];
//设置参数
NSString *argString = @"test method";
[invocation setArgument:&argString atIndex:2];
//执行方法
[invocation retainArguments];
[invocation invoke];
//获取返回值
[invocation getReturnValue:&string];
NSLog(@"执行结果 ====%@",string);
}2、执行实例方法
demo示例代码如下:
- (void)testInstanceMethod{
NSString *string = [NSString stringWithFormat:@"我是一个string"];
NSLog(@"1=%@",string);
SEL subStringSel = @selector(substringFromIndex:);
//初始化NSMethodSignature对象
NSMethodSignature *methodSignature = [[NSString class] instanceMethodSignatureForSelector:subStringSel];
//初始化NSInvocation对象
NSInvocation *myInvocation = [NSInvocation invocationWithMethodSignature:methodSignature];
//设置target
[myInvocation setTarget:string];
//设置selector
[myInvocation setSelector:subStringSel];
//设置参数
int arg1 = 2;
[myInvocation setArgument:&arg1 atIndex:2];//参数从2开始,index 为0表示target,1为_cmd
//获取结果
NSString *resultString = nil;
[myInvocation invoke];
[myInvocation getReturnValue:&resultString];
NSLog(@"2=%@",resultString);
}最新技术文章: