Android为组件添加多个权限,Android 自定义权限 permission

本文介绍了如何在Android中为应用程序组件自定义权限。通过在AndroidManifest.xml中声明并设置权限,可以限制组件(如Activity、BroadcastReceiver)的访问。详细步骤包括创建权限、设置保护级别和在组件上应用权限。此外,还展示了如何在测试工程中检查权限控制的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

支持为应用程序自定义权限。如果希望自己的程序组件(如Activity,BroacastReceiver)等被任意用户随意启动执行。要使用自定义权限,首先在AndroidManifest.xml文件中声明它们,定义了权限之后,可以将它作为组件定义的一部分进行引用。

下面列举一个demo,详述自定义权限的过程:

首先创建一个工程CustomMadePermisson:

主Activity(启动Activity):

importandroid.app.Activity;

importandroid.os.Bundle;

importandroid.view.ViewGroup.LayoutParams;

importandroid.widget.LinearLayout;

importandroid.widget.TextView;

publicclassMainActivityextendsActivity {

/** Called when the activity is first created. */

@Override

publicvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

LinearLayout layout =newLinearLayout(this);

layout.setLayoutParams(newLayoutParams(LayoutParams.FILL_PARENT,

LayoutParams.WRAP_CONTENT));

layout.setOrientation(LinearLayout.HORIZONTAL);

TextView textView =newTextView(this);

textView.setText("欢迎来到徐志奇的博客!");

layout.addView(textView);

setContentView(layout);

}

}

新建另外一个Activity,名称为Another,该Activity只是一个空Activity,用来验证添加启动权限后的启动效果:

import android.app.Activity;

import android.os.Bundle;

import android.widget.Toast;

public class Another extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Toast.makeText(this,"欢迎来到新的界面",Toast.LENGTH_LONG).show();

}

}

添加权限:

双击AndroidManifest.xml文件,打开permissions选项卡,在Permissions窗口中单击Add按钮,选择Permission,然后单击ok按钮,添加一个新的Permission:

权限的特性:

Android:name

权限的名称,必填属性,通常应该遵循Android的命名方案(*.permission.*)但非必须。

android:protectionLevel

定义与权限相关的保护级别,必填属性。必须选择一下四项之一:normal、dangerous、signature、signatureOrSystem。

android:permissionGroup

非必填属性,可以将权限放在一个组中,但对于自定义权限,尽量不要设置此属性了。

android:label

非必填属性,含义你应该明白。

android:description

非必填属性,含义你应该明白。

android:icon

非必填属性,含义你应该明白。

现在已经定义好了权限,接下来就是设置启动Activity的权限了。要在活动上设置权限,可以将android:permission特性添加到AndroidManifest.xml文件中:

AndroidManifest.xml文件:

package="com.xzq.custompermission" android:versionCode="1"

android:versionName="1.0">

android:name="com.xzq.permission.zhongnantest">

android:permission="com.xzq.permission.zhongnantest">

新建测试工程Clint:

在该工程中创建一个Activity,用来测试上面添加了启动权限的Activity的启动情况。

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

public class MainActivity extends Activity {

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

((Button) findViewById(R.id.button1))

.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent();

intent.setClassName("com.xzq.custompermission",

"com.xzq.custompermission.Another");

startActivity(intent);

}

});

}

}

界面布局:

android:orientation="vertical" android:layout_width="fill_parent"

android:layout_height="fill_parent">

android:layout_height="wrap_content" android:text="@string/hello" />

android:layout_width="wrap_content" android:layout_height="wrap_content">

AndroidManifest.xml文件:

package="com.xzq.client" android:versionCode="1" android:versionName="1.0">

重点是在该文件中添加了相应的权限,才可以启动上面的界面。

自定义权限不仅适用于活动,实际上,也可以同样应用于Android中的其他类型的组件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值