自定义权限(二)在activity中的使用

1.作用:

实现只有知道我这个自定义权限的其他应用,才能打开我这个应用的某个界面。主要用于一个有多个应用的公司,他们可以利用这点,来打开自己,其他不知道的应用,不能打开

2.全部代码(不包含xml):省略

3.步骤:

1.创建两个APP

2.App2(被打开)

在AndroidManifest.xml中添加自定义权限(这个比较随意),动作,默认分类,这样完成了自定义权限的activity
com.example.sunweihao是自定义的

<activity android:name="com.kunminx.activityreceiver.MainActivity2"
            android:permission="com.example.sunweihao">
            <intent-filter>
                <action android:name="com.example.action.second"/><!--自定义动作-->
                <category android:name="android.intent.category.DEFAULT"/><!--默认分类-->
            </intent-filter>
        </activity>

3.APP1(用于打开APP2)

  1. 编写开启APP2的权限
    <!--声明权限-->
    <permission android:name="com.example.sunweihao"/>
    <!--使用权限-->
    <uses-permission android:name="com.example.sunweihao"/>

实现跳转

//activity中的自定义权限
        Intent mIntent=new Intent();
        mIntent.setAction("com.example.action.second");
        startActivity(mIntent);

图解:
在这里插入图片描述

4.总结反思:

它跟自定义广播比:
广播是接收者要权限,而activity是打开那个软件,要有那个软件的权限

### 回答1: 在Android,可以使用以下步骤在框架增加一个带有自定义权限的服务: 1. 定义权限:定义一个新的权限,可以在AndroidManifest.xml文件添加一个新的权限声明,例如: ``` <permission android:name="com.example.myapp.MY_PERMISSION" android:label="@string/my_permission" android:description="@string/my_permission_description" android:protectionLevel="dangerous" /> ``` 这里声明了一个名为 "com.example.myapp.MY_PERMISSION" 的自定义权限,并设置了其标签、描述和保护级别。 2. 定义服务:定义一个新的服务并将其添加到AndroidManifest.xml文件,例如: ``` <service android:name=".MyService" android:permission="com.example.myapp.MY_PERMISSION" /> ``` 这里定义了一个名为 "MyService" 的服务,并将其权限设置为 "com.example.myapp.MY_PERMISSION"。 3. 实现服务:创建一个新的服务类并在其实现服务的逻辑,例如: ``` public class MyService extends Service { @Override public int onStartCommand(Intent intent, int flags, int startId) { // 在此处添加服务逻辑 return super.onStartCommand(intent, flags, startId); } @Override public IBinder onBind(Intent intent) { // 如果服务需要绑定,则返回一个 IBinder 实例 return null; } } ``` 在这个示例,我们创建了一个名为 "MyService" 的服务,并在其实现了 onStartCommand() 方法。可以在这个方法添加服务的逻辑。 4. 请求权限:在应用程序请求自定义权限,例如: ``` if (ContextCompat.checkSelfPermission(this, "com.example.myapp.MY_PERMISSION") != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{"com.example.myapp.MY_PERMISSION"}, REQUEST_CODE); } ``` 这里使用了 ContextCompat.checkSelfPermission() 方法检查应用程序是否具有 "com.example.myapp.MY_PERMISSION" 权限。如果没有该权限,则使用 ActivityCompat.requestPermissions() 方法请求该权限。 以上就是在Android框架增加一个带有自定义权限的服务的步骤和示例。需要注意的是,在添加自定义权限时需要遵循一定的命名规范,并且在请求权限时需要向用户解释权限的目的。 ### 回答2: 在Android frameworks增加一个带有自定义权限的服务,可以按照以下步骤进行: 1. 创建权限: - 在AndroidManifest.xml文件添加自定义权限标签,例如: <permission android:name="com.example.custompermission.MY_PERMISSION" android:protectionLevel="dangerous" /> - 在权限标签设置权限的名称和保护级别。 2. 创建服务: - 创建一个继承自android.app.Service类的自定义服务,例如: public class CustomService extends Service { ... } - 在服务类实现自定义的功能逻辑。 3. 添加权限到服务: - 在服务类的onCreate()方法检查是否授权,例如: @Override public void onCreate() { super.onCreate(); if (checkCallingOrSelfPermission("com.example.custompermission.MY_PERMISSION") != PackageManager.PERMISSION_GRANTED) { throw new SecurityException("Permission denied"); } ... } - 在服务类的其他方法使用权限来控制访问限制,例如: public void performCustomAction() { if (checkCallingOrSelfPermission("com.example.custompermission.MY_PERMISSION") != PackageManager.PERMISSION_GRANTED) { throw new SecurityException("Permission denied"); } ... } 4. 注册服务: - 在AndroidManifest.xml文件注册自定义服务,例如: <service android:name=".CustomService" android:permission="com.example.custompermission.MY_PERMISSION" /> 5. 请求权限: - 在应用程序的代码请求自定义权限,例如: if (ContextCompat.checkSelfPermission(this, "com.example.custompermission.MY_PERMISSION") != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[] {"com.example.custompermission.MY_PERMISSION"}, REQUEST_CODE); } - 当权限请求被用户确认或拒绝后,可以在Activity的onRequestPermissionsResult()方法处理权限请求结果。 以上就是在Android frameworks添加一个带有自定义权限的服务的步骤和示例。通过创建权限、服务和对权限的控制,可以有效地管理和限制应用程序的功能和资源的访问。 ### 回答3: 要在Android frameworks增加一个带有自定义权限的服务,可以按照以下步骤进行操作: 1. 在Android源码目录找到frameworks/base/目录。在该目录下,创建一个新的文件夹,用于存放自定义服务的源代码和相关文件。 2. 在新创建的文件夹,创建一个Java类作为自定义服务的实现。该类需要继承自android.app.Service类,并实现相关的方法。 3. 修改AndroidManifest.xml文件,在其注册自定义服务。在<application>标签内添加以下代码: ```xml <service android:name=".CustomService" android:permission="com.example.custom_permission" /> ``` 其,“CustomService”是自定义服务的类名,“com.example.custom_permission”是自定义权限的名称。 4. 在系统的权限文件添加自定义权限。在frameworks/base/core/res/目录下的AndroidManifest.xml文件的<permission>标签内添加以下代码: ```xml <permission android:name="com.example.custom_permission" android:protectionLevel="normal" /> ``` 其,“com.example.custom_permission”是自定义权限的名称,“normal”是权限的保护级别。可以根据实际需要修改保护级别。 5. 在自定义服务的代码,可以通过使用Context的checkPermission()方法来检查调用者是否拥有自定义权限。例如: ```java if (checkPermission("com.example.custom_permission", Binder.getCallingPid(), Binder.getCallingUid()) == PackageManager.PERMISSION_GRANTED) { // 执行服务的逻辑 } else { // 没有权限,抛出SecurityException throw new SecurityException("Permission denied"); } ``` 通过以上步骤,就可以在Android frameworks增加一个带有自定义权限的服务了。在使用该服务的应用程序,需要在AndroidManifest.xml文件声明使用自定义权限,并在运行时进行权限检查,以确保调用者具有相应的权限
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值