当前位置:  编程技术>移动开发
本页文章导读:
    ▪你的情窦为哪位高手开        你的情窦为谁开? ......
    ▪ 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...

    本文出自:http://androidkaifa.com/thread-2614-1-1.html

   欢迎转载,转载请注明出自:安卓开发网 

 在网络上找了一段代码运行一下,出现下面的错误:
  • 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" />

        
    [3] NSInvocation运用示例
        来源: 互联网  发布时间: 2014-02-18
    NSInvocation使用示例
    一、概述

    在 iOS中可以直接调用 某个对象的消息 方式有2种


    第一种方式是使用NSObject类提供的performSelector系列方法


    还有一种方式就是使用NSInvocation进行动态运行时的消息分发,动态的执行方法,相信大家一定经常使用NSObject类提供的performSelector系列方法,在这里就不再对此进行描述了,今天主要是分享一下使用NSInvocation动态执行方法。


    二、NSInvocation的使用 1、执行类方法

    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);
    }



        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3