【问题标题】:create a permissions to restrict third party apps calling an activity android创建权限以限制调用活动android的第三方应用程序
【发布时间】:2011-08-17 16:53:08
【问题描述】:

我有两个使用相同证书签名的安卓应用。此外,我通过在“intent-filter”标签中指定名称来使用其他 android 应用程序中的一个应用程序的活动。但是由于“intent-filter”标签,任何第三方应用程序都可以调用我的活动。

由于这两个应用程序都签署了相同的证书,我可以通过提供一些权限来限制其他应用程序调用我的活动吗?对此的任何建议都会对我有所帮助。

-罗恩...

【问题讨论】:

    标签: android android-manifest android-preferences


    【解决方案1】:

    首先,如果您的活动不打算由您的其他应用程序使用,您可以删除意图过滤器;为什么不使用明确的意图呢? 因此,您的活动不能“错误地”创建,而只能是故意创建的,例如:

    Intent explicitIntent = new Intent(InvokingActivity.this, InvokedActivity.class);
    startActivity(explicitIntent);
    

    然后,为了防止外部出现这种情况,您可以定义自己的自定义权限并将其添加到您的活动中;查看权限的android:protectionLevel 属性,其值可以是“签名”。

    【讨论】:

    • 感谢您的回复,我使用了意图过滤器标签,因为一个活动正在被两个应用程序共享。您还可以发布一些有关如何将 android:protectionLevel="signature" 用于活动的示例吗?
    • 难道这两个应用程序不知道要直接调用的类,因此您可以使用显式意图(参见我的示例)而不是隐式(即通过意图过滤器)?
    • 实际上,这里的问题是我有共享的登录活动。如果我使用显式意图,那么一段时间后,如果我创建一个新应用程序,那么我需要修改这个显式意图。所以我使用了意图过滤器标签,这样我只会从应用程序中调用意图名称。现在,即使我创建了一个新应用,只需使用意图名称就可以帮助我调用登录活动。
    • 至于权限的使用,请看这里:developer.android.com/guide/topics/manifest/… 您在包级别创建一个具有属性 android:protectionLevel="signature" 的权限 + 您在包级别使用 uses-permission 声明它标记 + 您在活动级别使用活动的 android:permission 属性声明它。
    • 添加到上面的评论,我认为明确的意图只会从同一个包中调用。但是我的两个应用程序正在开发为两个不同的包,我不想通过添加引用来搞砸两者。是否可以从意图过滤器标签强制执行 android:protectionLevel?我想如果可能的话,我会得到一个解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 2016-07-01
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多