android中为了安全性起见,对于应用预定义了很多权限,比如联系人,短信等等。而且其还支持自定义权限,下面通过代码示例,表述一下自定义权限的定义以及使用。
首先定义一个Activity:
package com.cust.perm;
import android.app.Activity;
import android.os.Bundle;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.TextView;
public class PrivilActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
LinearLayout layout=new LinearLayout(this);
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
layout.setOrientation(LinearLayout.VERTICAL);
TextView txt=new TextView(this);
txt.setText("hello from privilActivity");
layout.addView(txt);
setContentView(layout);
}
}
而后在menifest.xml文件中进行权限的声明:
<activity android:name=".PrivilActivity"
android:permission="com.permission.my"
>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="4" />
<permission android:protectionLevel="normal" android:name="com.permission.my"></permission>
请注意红色部分,核心配置。
关于<permission>标签中有很多属性,上述配置的这两个属性是必须的,其他属性含义如下:
下面编写另外一个项目,该项目中对于PrivilActivity进行使用,假设该项目中有一个ClientActivity
,其功用是通过intent启动PrivilActivity
public class ClientActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn=(Button)findViewById(R.id.Button01);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent();
intent.setClassName("com.cust.perm","com.cust.perm.PrivilActivity");
startActivity(intent);
}
});
}
}
在其manifest.xml配置如下:
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".ClientActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="4" />
<uses-permission android:name="com.permission.my"></uses-permission>
这样就获取了自定义权限。