【问题标题】:Android allow call to activity only to predefined activities/packagesAndroid 只允许对预定义的活动/包调用活动
【发布时间】:2012-03-02 18:07:38
【问题描述】:

我有一个具有不同活动的应用程序。可以从其他应用程序调用其中一个活动。

有没有办法设置只能从指定的应用程序(例如 com.other.application 和 com.different.application)调用此特定活动的权限。我会在 AndroidManifest.xml 或其他地方配置那些允许的应用程序。

谢谢

【问题讨论】:

  • “其中一个活动可以从其他应用程序中调用。”这只有在您声明它确实能够做到的情况下才有可能。所以我真的不明白这个问题。默认情况下,Manifest 中声明的任何 Activity 都不会响应隐式 Intent,因此其他应用无法有效处理。
  • 请参考link

标签: android android-activity permissions


【解决方案1】:

您可以定义自己的权限,并且只允许请求该权限的应用访问该功能。

定义权限

<permission android:name="uk.co.packagename.mypermission"/>

设置活动权限

    <activity android:permission="uk.co.packagename.mypermission" android:name=".ActivityName"/>

使用权限

<uses-permission android:name="uk.co.packagename.mypermission"/>

【讨论】:

    【解决方案2】:

    您可以在应用程序包之外声明您的活动可访问或不可访问,但对于某些可访问的应用程序或某些不可访问的应用程序是不可行的。

    要将 Activity 设为私有,您需要在清单中设置 Activity 的属性:exported=false;

    【讨论】:

    • 感谢您的回答,我无法投票,因为我失去了声誉 :) 我最终得到了一个小技巧:Bundle extras = getIntent().getExtras(); if (extras == null || extras.getString("username") == null) { //check the password this.finish(); return; } 现在,如果应用程序提供正确的用户名和密码,它们就可以打开活动.
    猜你喜欢
    • 2021-04-30
    • 2014-04-07
    • 2014-07-23
    • 1970-01-01
    • 2018-07-08
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多