首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android -如何知道我失去了检查呼叫的权限(在棉花糖上)

Android -如何知道我失去了检查呼叫的权限(在棉花糖上)
EN

Stack Overflow用户
提问于 2016-08-10 20:33:33
回答 5查看 367关注 0票数 2

我有一个应用程序,可以拨打特定号码的列表。

这是我的“宣言”中的接收器:

代码语言:javascript
运行
复制
        <receiver android:name=".manager.sos.CallReceiver" >
        <intent-filter>
            <action android:name="android.intent.action.PHONE_STATE" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>

这样,我就可以准确地知道调用的时间和结束的时间。当一个调用结束时,我会在"onOutgoingCallEnded“方法被调用之后进行一个新的调用。方法"onOutgoingCallEnded",通过我的CallReceiver调用,基于TelephonyManager状态:EXTRA_STATE_IDLEEXTRA_STATE_OFFHOOKEXTRA_STATE_RINGING...因此,如果不调用CallReceiver,我就不会到达"onOutgoingCallEnded“方法

我的问题从Android6.0(棉花糖)开始,因为即使用户允许呼叫,他也可以随时在App Settings上撤销它。

因此,当进行调用时,用户拒绝许可,我看不到我的"onOutgoingCallEnded“方法被调用,因为我失去了检查调用状态的权限。

那么,我怎么知道我失去了检查呼叫的权限呢?

EN

回答 5

Stack Overflow用户

发布于 2016-08-10 20:50:31

那么我怎么知道我失去了检查呼叫的权限呢?

你不需要,至少不是马上。当您失去权限时,Android将终止您的进程。它不会在你的应用程序上调用任何方法来告诉你你失去了权限。

你只会发现你的代码由于其他原因运行(例如,用户点击你的启动器图标),在那里你可以调用checkSelfPermission()来查看你是否仍然拥有权限。

您的场景并不常见,但它反映了运行时权限系统IMHO中的一个漏洞。理想情况下,您会发现您的接收器将不再接收此类广播。

票数 1
EN

Stack Overflow用户

发布于 2016-08-10 20:50:31

当发起调用时,可能会调用活动的pause方法,当用户返回到应用程序时,将调用活动的resume方法,因此您可以在onResume中检查权限,如果用户已撤销权限,您将能够了解它

票数 1
EN

Stack Overflow用户

发布于 2016-08-10 20:35:43

看起来你已经回答了你自己的问题。最简单的方法(在我看来)是检查onOutgoingCallEnded()方法是否正在被调用,以了解您是否失去了检查调用状态的权限。

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

https://stackoverflow.com/questions/38873571

复制
相关文章

相似问题

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