当前位置:  编程技术>移动开发
本页文章导读:
    ▪BroadcastReceiver中运用自定义Permission        BroadcastReceiver中使用自定义Permission   BroadcastReceiver中使用自定义Permission          对于权限的使用,我想进行过android开发的都用过,比如:我们需要进行与网络相关的操作时,就必须在m.........
    ▪ box2d 中,body的三种作用力成效-ApplyForce, ApplyImpulse, SetLinearVelocity        box2d 中,body的三种作用力效果--ApplyForce, ApplyImpulse, SetLinearVelocity ============================================================ 博文原创,转载请声明出处 蓝岩--移动互联网老兵 =====================================.........
    ▪ UML中的四种关系2       UML中的四种关系二  uml中的四种关系一           前两天我们要试讲,我选择试讲的内容是UML中的四种关系,UML刚学过,讲起来应该挺容易的。这四种关系:关联、依赖、泛化、实现,.........

[1]BroadcastReceiver中运用自定义Permission
    来源: 互联网  发布时间: 2014-02-18
BroadcastReceiver中使用自定义Permission

   BroadcastReceiver中使用自定义Permission

 

       对于权限的使用,我想进行过android开发的都用过,比如:我们需要进行与网络相关的操作时,就必须在manifest中声明android.permission.INTERNET的权限;又或者我们需要对SDCard进行操作时,就需要声明如下的权限:android.permission.WRITE_EXTERNAL_STORAGE(写入数据的权限)和 

       android.permission.MOUNT_UNMOUNT_FILESYSTEMS(创建和删除文件的权限)。

 

       如果创建自定义的permission,其实也是一件很简单的事情;但是再创建自定义的permission之后,需要在广播接收器BroadcastReceiver中使用,就必须注意如下的问题:

        ①、发送具有权限的广播

        ②、具有权限的广播接收器

        接下来我们就通过一个例子,来说明如何在BroadcastReceiver中使用自定义的permission,首先需要创建一个应用SelfPermissionBroadcastReceiver,下面1-2-3的操作都在该应用中。

        1、需要创建自定义的permission。在manifest中创建自定义permission的配置如下:     

    <!-- 创建自定义授权 -->
    <permission android:name="com.android.study.permission.MYRECEIVER"
                android:protectionLevel="dangerous">
    </permission>

             自定义permission中的name必须是唯一的,而protectionLevel则可以自己选择。

        2、声明自定义的permission。只有在有用到该权限的时候才需要声明,在manifest中声明自定义permission的配置如下:            

    <!-- 声明自定义权限 -->
    <uses-permission android:name="com.android.study.permission.MYRECEIVER"/>

             3、创建广播接收类,一个具有自定义的权限,另一个则任何权限都没有。其实接收处理的代码大体一样,只是在manifest或在代码中registerReceiver进行注册时,一个授予了权限,另一个则没有授予。两个类的核心代码以及注册(这里采用的是manifest中静态注册)配置如下:

        ①、具有权限的广播接收类PermissionBroadcastReceiver

        代码:

	@Override
	public void onReceive(Context context, Intent intent) {
		//TO DO
		
		System.out.println("具有自定义权限的广播接收类——" + intent.getStringExtra("data"));		
		//TO DO
	}

              配置文件注册:

       <!-- 在receiver中使用自定义权限 -->
        <receiver android:name="com.android.study.receiver.PermissionBroadcastReceiver"
            android:permission="com.android.study.permission.MYRECEIVER">
        	
            <intent-filter>
                <action android:name="com.android.study.action.IRECEIVER" />
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </receiver>


        ②、没有权限的广播接收类NoPermissionBroadcastReceiver

        代码:

	@Override
	public void onReceive(Context context, Intent intent) {
		//TO DO
		
		System.out.println("没有自定义权限的广播接收类——" + intent.getStringExtra("data"));
		
		//TO DO
	}

              配置文件注册:

       <!-- 在receiver中不使用自定义权限 -->
        <receiver android:name="com.android.study.receiver.NoPermissionBroadcastReceiver">        	
            <intent-filter>
                <action android:name="com.android.study.action.IRECEIVER" />
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>
        </receiver>

              4、另外创建一个应用SendBroadcast,并通过SendBroadcastActivity类进行广播的发送,其主要代码如下。 

      public void onCreate(Bundle savedInstanceState) {
        		super.onCreate(savedInstanceState);
        		setContentView(R.layout.main);
        
        		System.out.println("SendBroadcastActivity start....");
		Intent intent = new Intent();
		intent.setAction("com.android.study.action.IRECEIVER");
		intent.putExtra("data", "sendPermission");
		//发送带权限的广播
		System.out.println("SendBroadcastActivity send broadcast....");
		sendBroadcast(intent, "com.android.study.permission.MYRECEIVER");
		//发送一般的广播
		intent = new Intent();
		intent.setAction("com.android.study.action.IRECEIVER");
		intent.putExtra("data", "sendNormal");
		sendBroadcast(intent);
		
		System.out.println("SendBroadcastActivity end....");
    }

      并在该SendBroadcast应用中声明自定义的permission,其权限声明如下:

    <!-- 声明自定义权限 -->
    <uses-permission android:name="com.android.study.permission.MYRECEIVER"/>

      

       5、通过1-2-3-4的这些操作创建好了一个具有自定义permission的广播发送接收实例,下面通过四种情况进行代码的执行,通过LogCat的日志记录来分析具有自定义permission的广播发送接收机制:

       ①、应用SendBroadcast和应用SelfPermissionBroadcastReceiver中的自定义权限声明都打开(不注释),通过运行SelfPermissionBroadcastReceiver之后再运行SendBroadcast,LogCat将打印如下的结果:

12-24 08:53:57.994: I/System.out(1833): SendBroadcastActivity Permission start....
12-24 08:53:57.994: I/System.out(1833): SendBroadcastActivity Permission send....
12-24 08:53:58.104: I/System.out(1833): SendBroadcastActivity Permission end....
12-24 08:53:58.244: I/System.out(1883): 具有自定义权限的广播接收类——sendPermission
12-24 08:53:58.263: I/System.out(1883): 没有自定义权限的广播接收类——sendPermission
12-24 08:53:58.303: I/System.out(1883): 具有自定义权限的广播接收类——sendNormal
12-24 08:53:58.334: I/System.out(1883): 没有自定义权限的广播接收类——sendNormal

       ②、应用SendBroadcast中的自定义权限声明打开,而应用SelfPermissionBroadcastReceiver中的自定义权限声明注释掉,通过运行SelfPermissionBroadcastReceiver之后再运行SendBroadcast,LogCat将打印如下的结果:

12-24 08:53:57.994: I/System.out(1833): SendBroadcastActivity Permission start....
12-24 08:53:57.994: I/System.out(1833): SendBroadcastActivity Permission send....
12-24 08:53:58.104: I/System.out(1833): SendBroadcastActivity Permission end....
12-24 08:53:58.303: I/System.out(1883): 具有自定义权限的广播接收类——sendNormal
12-24 08:53:58.334: I/System.out(1883): 没有自定义权限的广播接收类——sendNormal

       ③、应用SendBroadcast中的自定义权限声明注释掉,而应用SelfPermissionBroadcastReceiver中的自定义权限声明打开,通过运行SelfPermissionBroadcastReceiver之后再运行SendBroadcast,LogCat将打印如下的结果:

12-24 08:53:57.994: I/System.out(1833): SendBroadcastActivity Permission start....
12-24 08:53:57.994: I/System.out(1833): SendBroadcastActivity Permission send....
12-24 08:53:58.104: I/System.out(1833): SendBroadcastActivity Permission end....
12-24 08:53:58.244: I/System.out(1883): 没有自定义权限的广播接收类——sendPermission
12-24 08:53:58.263: I/System.out(1883): 没有自定义权限的广播接收类——sendNormal      

       ④、应用SendBroadcast和应用SelfPermissionBroadcastReceiver中的自定义权限声明都注释掉,通过运行SelfPermissionBroadcastReceiver之后再运行SendBroadcast,LogCat将打印如下的结果:

12-24 08:53:57.994: I/System.out(1833): SendBroadcastActivity Permission start....
12-24 08:53:57.994: I/System.out(1833): SendBroadcastActivity Permission send....
12-24 08:53:58.104: I/System.out(1833): SendBroadcastActivity Permission end....
12-24 08:53:58.334: I/System.out(1883): 没有自定义权限的广播接收类——sendNormal


       根据上述的四种情况以及各自打印的日志,可以总结出具有permission(自定义或系统定义)的广播发送接收机制:

        ①、当应用B(相当去例子中的应用SendBroadcast)发送带权限的广播时,如果应用A(相当去例子中的应用SelfPermissionBroadcastReceiver)需要接收该广播,就必须在其manifest文件中声明接收该广播的权限,否则不能接收到该广播信息。

        ②、当应用A(相当去例子中的应用SelfPermissionBroadcastReceiver)定义了带权限的广播接收器,如果应用B(相当去例子中的应用SendBroadcast)需要让该广播接收器接收处理发送的广播,就必须在其manifest文件中声明访问该广播接收器的权限,否则不能被该广播接收器接收处理。


       其实说的通俗一点就是:如果发送方设置了权限,接收方想要介绍该信息就必须声明接收的权限;相反的,如果接收方设置了权限,发送方想要接收方进行接收处理,就必须声明被处理的权限。




 

 


    
[2] box2d 中,body的三种作用力成效-ApplyForce, ApplyImpulse, SetLinearVelocity
    来源: 互联网  发布时间: 2014-02-18
box2d 中,body的三种作用力效果--ApplyForce, ApplyImpulse, SetLinearVelocity

============================================================
博文原创,转载请声明出处
蓝岩--移动互联网老兵
============================================================
在box2d开发中,body除了收重力、摩擦力、弹力等等作用自然力的作用意外,用户还可以手动操作body,共有三种方式:ApplyForce、ApplyImpulse和SetLinearVelocity。下面分别介绍一下:

ApplyForce指的是对物体应用一个力,物理学中F=ma,这里的ApplyForce就是我们的F,物体的质量mass固定,因此物体加速度也固定,速度抓紧改变。

ApplyImpulse是对物体施加一个冲量,经典物理学中动量守恒:,F*t即为我们的冲量,m一定,则速度改变,这里v是在原速度的基础上进行改变的。

SetLinearVelocity是直接用来改变物体的速度,中间没有什么加速度的概念,直接定义新速度。新速度和原速度没有关系,这就是和ApplyImpulse的区分。

具体的效果可以参考一位博友的博客,他在做了一个flash的demo。传送门

另外我在开发中遇到一个问题,我的刚体会根据重力而迅速旋转90°开始逐渐下落。当我施加了水平方向的ApplyImpulse之后,body不再旋转。不晓得为什么。。。。。


    
[3] UML中的四种关系2
    来源: 互联网  发布时间: 2014-02-18
UML中的四种关系二

  uml中的四种关系一 

   

     前两天我们要试讲,我选择试讲的内容是UML中的四种关系,UML刚学过,讲起来应该挺容易的。这四种关系:关联、依赖、泛化、实现,一说都知道,也看过一些例子,能说出那些例子来。但是有一天,一个同学拿着我写的试讲稿,我上面写着:其中,依赖的关系最弱......。他就问我为什么他最弱啊,你知道他在代码中如何体现的不,不过想想当时学UML时还真没注意过,当时视频里也有讲过这些关系如何在代码中体现的,但是就一过了了,没有去关注,也没去总结着几种关系他们在代码里如何区别的。下面就这几种关系写个例子,附上代码哈。

 

    一、依赖

    依赖关系最弱,因为依赖类是在被依赖类中的一个方法的参数里,他会随着调用该方法而实例化,随着该方法的结束而消亡。例如:

代码:class  Professor

          {    public void teach (Course   C)

                 {...}

          }

    二、关联

    关联比依赖强,因为他是体现在属性里,会随着类的实例化就实例化了。例如:

代码:class Person

          {

                public Company  m_company;

          }

    2.1聚合

    聚合表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。例如:

代码:class  WideGooseAggregate

         {

               private WideGoose[]  arrayWideGoose;

         }

在雁群WideGooseAggregate类中,有大雁数组对象arrayWideGoose。

    2.2组合

    组合是一种强的‘拥有’关系,体现了严格的部分和整体的关系,部分和整体的生命周期是一样的。例如:

代码:class Bird

         {

             private Wing  wing;

             public Bird()

                {    wing=new  Wing();}

         }

在鸟Bird类中,初始化时,实例化翅膀Wing,他们之间同时生成。

    三、泛化

  泛化即继承关系,是‘is A’关系,一般/特殊关系,特殊元素的对象可以代替一般元素的对象。例如:

代码:class  Employee

         {...}

         class  Manager :Employee

          {...}

         class Enginee :Employee

          {...}

    四、实现

     一个类实现一个接口。例如:大雁实现飞翔接口。

代码:interface IFly

         {

              void   Fly();

         }

         class WideGoose :IFly

          {...}

 

 

 

 

 

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
WEB前端 iis7站长之家
▪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