gpt4 book ai didi

android - Intent 自定义权限不起作用

转载 作者:行者123 更新时间:2023-11-29 01:55:04 25 4
gpt4 key购买 nike

更新

我的直接问题已根据下面的回答解决。我的环境(PC + 设备)不允许在 DEBUG 构建中自定义权限。

我确信几周前我能够正常运行 DEBUG 构建 - 因此描述了“间歇性”错误。

更新 2

代码在不同开发人员的机器上同步出来,通过 Eclipse 在 DEBUG 模式下在他的设备上运行良好。在我的设备上,它在他的机器上不起作用。

我的机器上的 DEBUG 构建在这台其他设备上也能正常工作。

这让我怀疑我的设备是否出了问题?


我有间歇性的“权限拒绝”自定义权限Intents问题。它是代码在生产和工作中的地方之一,但有时在制作新版本时,它会停止工作。我之前只是靠运气修复它,通过重新启动(设备和电脑)、清理项目、卸载/重新安装、重复等过程......这是 Not Acceptable 。

据我所知,我正在为我在我的应用程序中广播的 Intents 的自定义权限做所有正确的事情。但是 logcat 给我常见的错误:

  • W/BroadcastQueue( 389): 权限被拒绝:从 com.test (pid=22030, uid=10002) 广播 Intent { act=A_ACTION flg=0x10 } 需要 A_PERMISSION 由于已注册接收器BroadcastFilter{43918d50 u0 ReceiverList{4391cad8 22030 com.test/10002/u0 remote:430576d0}}

在 4.2.1 (Galaxy Nexus) 和 4.2.2 (Nexus 7) 上,或

  • W/ActivityManager( 2002):权限被拒绝:接收 Intent { act=A_ACTION flg=0x10 } 到 ProcessRecord{41a12748 31496:com.test/10115} (pid=31496, uid=10115) 由于发件人 com 需要 A_PERMISSION .test (uid 10115)

在 4.0 (S2) 和 2.3.3 (Samsung Ace) 上。

即标准误。


我的 list 说:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test"
android:versionCode="1"
android:versionName="4.10.0.3" >

<permission
android:name="A_PERMISSION"
android:description="@string/broadcast_permission_desc"
android:label="@string/broadcast_permission_label"
android:permissionGroup="@string/broadcast_permission_group"
android:protectionLevel="signature" />

<uses-permission android:name="A_PERMISSION" />

etc.....

这些字符串定义为 (fwiw):

<string name="broadcast_permission_label">Private Broadcast</string>
<string name="broadcast_permission_desc">This permission allows the necessary components of the application to receive private broadcasts that are sent within the application.</string>
<string name="broadcast_permission_name">A_PERMISSION</string>
<string name="broadcast_permission_group">A_GROUP</string>

我的基本 APPLICATION 子类中有一个方法用于进行广播:

public void sendBroadcast(Intent i)
{
// hardcoded custom permission
super.sendBroadcast(i, "A_PERMISSION");
}

我从 Fragment 中注册我的 BroadcastReceiver,如下所示:

public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

// hardcoded custom permission
MyApp.getInstance().registerReceiver(myReceiver, myFilter,
"A_PERMISSION", null);
}

不高兴的查了下相关问题:


我认为这涵盖了本网站上的类似问题。

我的问题是它断断续续但浪费了很多时间,即有些构建在所有手机上都能正常工作,有些构建在所有手机上都失败了。

我想知道这是否是其中一个框架(Android 操作系统,或者可能是 Eclipse/Android SDK)中的问题。不幸的是,我的谷歌搜索只会让我找到更常见的问题和常见的解决方案。

最佳答案

最终解决方案 - 我同意这似乎没有意义,但它是:

我有 2 个应用程序使用相同的权限 - com.testcom.runtest

如上所述,com.test 对于 DEBUG 构建已损坏。但我注意到 com.runtest 仍在工作。


步骤:

  1. 已安装 com.runtest 以确认其正常工作
  2. 从我的设备上卸载了这两个应用
  3. com.runtest 重命名为 com.test - 在 Eclipse 中(Android 工具...重命名应用程序包)
  4. 在我的设备上的 Eclipse 中调试了这个重命名的应用程序 - 它有效
  5. 删除了这个重命名的“假”com.test
  6. 在我的设备上调试了 Eclipse 中的原始 com.test 应用程序 - 它终于成功了!

因此,出于某种原因,用可用的应用程序覆盖损坏的应用程序改变了一些东西,并修复了我的设备。

关于android - Intent 自定义权限不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15685427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com