零星记录(一)

1. 多个PendingIntent时如何区分不同的Intent?

调用下面两个函数可以获得对应的PendingIntent,如果requestCode相同,获得的PendingIntent里的intent总是最后一个。所以要想区分,需要指定不同的requestCode.

public static PendingIntent getActivity(Context ontext, int requestCode, Intent intent, int flags);
public static PendingIntent getService(Context ontext, int requestCode,  Intent intent, int flags);

2. 使布局大小产生变化时,伴随着动画效果:

<LinearLayout android:id="@+id/container"
    android:animateLayoutChanges="true"   // 设置layout的该属性
    ...
/>

3. FrameLayout使用注意

    FrameLayout的子控件默认是层层叠加在左上角的,若要控制各个子控件的位置布局,可以在子控件及FrameLayout之间加一层LinearLayout或RelativeLayout,并把这两个Layout的Params设置为FILL_PARENT,然后设置子控件在LinearLayout或RelativeLayout中的位置即可。

4. 自定义permission

在android系统的安全模型中,如果应用需要执行某些操作,就需要声明使用这个操作对应的权限。(在manifest文件中 添加<uses-permission>标记)

app可以自定义属于自己的permission 或属于开发者使用的同一个签名的permission。定义一个permission 就是在menifest文件中添加一个permission标签:
<permission android:description="string resource"  
            android:icon="drawable resource"  
            android:label="string resource"  
            android:name="string"  
            android:permissionGroup="string"  
            android:protectionLevel=["normal" | "dangerous" |   
                                     "signature" | "signatureOrSystem"] />

参数说明:
android:description :对权限的描述,一般是两句话,第一句话描述这个权限所针对的操作,第二句话告诉用户授予app这个权限会带来的后果
android:label: 对权限的一个简短描述
android:name :权限的唯一标识,一般都是使用包名加权限名
android:permissionGroup: 权限所属权限组的名称
android:protectionLevel: 权限的等级:
    normal :低风险权限,在安装的时候,系统会自动授予权限给 application,不会提示用户
    dangerous :高风险权限,系统在安装声明此类权限的app时会提示用户
    signature :签名权限,权限表明的操作只针对使用同一个证书签名的app开放
    signatureOrSystem :权限表明的操作只对 有相同签名的APP 或者 系统内置APP(系统镜像携带的APP)有效。


例子:指定一个BroadcastReceiver的权限,达到目的:具有相同签名的APP发的broadcast才能被reveiver收到。
假设创建两个app, appA, appB, appA注册了一个BroadcastReceiver,appB发送广播。

(1) appA的menifest文件中声明permission:
<permission android:name="settings.permission.DHCP_VENDOR"
                  android:protectionLevel="signature" >

注册Broadcast Receiver,并指定了给当前Receiver发送消息方需要的权限:
<receiver android:name=".SettingsReceiver"
          android:permission="gaia.settings.permission.DHCP_VENDOR">
          <demand-filter>
              <action gaia:name="settings.demand.action.DHCP_VENDOR" />
          </demand-filter>
</receiver>

(2) appB的menifest文件中声明使用指定的权限:
    <uses-permission android:name="settings.permission.DHCP_VENDOR" />

假设appA与appB使用同一证书签名,这样appB给appA发送消息,appA就可以收到;若其它app未声明相应权限或者与appA签名不一样,appA是收不到的。

    用于安全相关控制。参考:http://berdy.iteye.com/blog/1782854

转载于:https://www.cnblogs.com/Jackwen/p/4386802.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值