UPDATE
我迫在眉睫的问题按照我下面的回答得到了解决。我的环境(PC + 设备)不允许在 DEBUG 版本中自定义权限。
我确信几周前我能够正常运行 DEBUG 构建 - 因此描述了“间歇性”错误。
UPDATE 2
代码在不同开发人员的机器上同步,通过 Eclipse 在调试模式下在他的设备上运行良好。在我的设备上,它无法在他的机器上运行。
另外,我的机器上的调试版本在其他设备上运行良好。
这让我怀疑我的设备是否出了问题?
我有间歇性“拒绝许可”自定义权限问题Intents
。这是代码在生产中并且可以工作的代码之一,但有时在进行新构建时,它会停止工作。我之前只能靠运气修复它,通过重新启动(设备和电脑)、清理项目、卸载/重新安装、重复等过程......这是不可接受的。
据我所知,我正在为我的自定义权限做所有正确的事情Intents
我正在我的应用程序中广播。但 logcat 给了我常见的错误:
- W/BroadcastQueue( 389):权限拒绝:来自 com.test (pid=22030,uid=10002) 的广播 Intent { act=A_ACTION flg=0x10 } 由于已注册接收器而需要 A_PERMISSION
广播过滤器{43918d50 u0 ReceiverList{4391cad8 22030 com.test/10002/u0远程: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) 需要 A_PERMISSION,因为发送者 com.test ( uid 10115)
在 4.0 (S2) 和 2.3.3 (三星 Ace) 上。
即标准误差。
我的清单说:
<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");
}
我注册我的BroadcastReceiver
从一个内Fragment
像这样:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// hardcoded custom permission
MyApp.getInstance().registerReceiver(myReceiver, myFilter,
"A_PERMISSION", null);
}
我不高兴地检查了以下相关问题:
- Android 权限拒绝:广播 Intent
- Android中如何使用自定义权限?
- 如何在android中声明用户定义的权限
我认为这涵盖了该网站上的类似问题。
我的问题是它是间歇性的,但浪费了大量时间,即有些构建在所有手机上都可以工作,有些构建在所有手机上都失败。
我想知道这是否是某个框架(Android 操作系统,或者 Eclipse/Android SDK)中的问题。不幸的是,我的谷歌搜索只能让我找到更常见的问题和常见的解决方案。