首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用导航组件在单个活动设计中使用权限?

如何使用导航组件在单个活动设计中使用权限?
EN

Stack Overflow用户
提问于 2021-01-24 11:27:22
回答 1查看 259关注 0票数 1

我以前的应用程序有很多活动,其中一些被声明为导出为真,以便其他应用可以通过意图过滤器调用它们。他们中的一些人也有特别的许可,这也是在我的活动中设定的。

现在,我正在开发一个应用程序使用单一的活动。因此,我很想知道如何在单个活动设计中处理这个权限问题,因为我只有一个活动。

以前,在多个活动中,我可以很容易地在特定活动中设置权限。我怎么处理这件事?我是个新手。我找了很多东西,但没有找到任何线索。

编辑:

代码语言:javascript
运行
复制
    Multiple activities declaration:

    <permission
      android:name="com.example.permission"
      android:protectionLevel="signatureOrSystem"
      tools:ignore="SignatureOrSystemPermissions" 
    />

    // Activity 1: With permission, exported = true
    <activity
        android:name=".place"
        android:configChanges="keyboardHidden|orientation|screenSize|screenLayout"
        android:exported="true"
        android:label="place"
        android:permission="com.example.permission" // Sets a permission
        android:theme="@style/Theme.AppCompat.DayNight.NoActionBar">
        <intent-filter>

            <action android:name="com.action.places" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

    // Activity 2: With no permission, exported = true

      <activity
        android:name="userCheck"
        android:configChanges="mcc|mnc|keyboard|keyboardHidden|orientation"
        android:exported="true"
        android:theme="@style/Theme.AppCompat.DayNight.NoActionBar">
        <intent-filter>
            <action android:name="com.confirm.passowrd" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
     </activity>

现在,我想转移到单一的活动。

代码语言:javascript
运行
复制
   // Single activity: exported = true. How can i handle permission for place action?
    <activity
        android:name="com.example.singleActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <!-- Place -->
            <action android:name="com.action.places"/> // How can i handle permission for this action?

            <!-- UserCheck -->
            <action android:name="com.confirm.passowrd" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-25 11:56:27

如果要在某些情况下限制单个Activity的启动,而不能使用其他情况下的权限,则不能使用基于清单的权限。基于清单的权限控制对特定Activity的访问,无论它是如何启动的.

您可以做的是为您的单个<activity-alias>创建一个Activity<activity-alias>是一个清单条目,它引用了实际的Activity,但提供了备用的启动选项。可以在<activity-alias>上指定与实际Activity上的权限不同的权限集。您还可以指定不同的launchMode、不同的<intent-filter>等等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65869949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档