根据我的回答,我的问题就解决了。我的环境(PC +设备)不允许在DEBUG构建中使用自定义权限。
我确信几周前我能够运行DEBUG版本 - 因此描述了“间歇性”错误。
代码在不同的开发人员的机器上同步,通过Eclipse在DEBUG模式下在他的设备上正常工作。在我的设备上,它无法在他的机器上运行。
此外,我机器上的DEBUG版本在其他设备上运行正常。
这让我质疑我的设备上是否出现了问题?
我的自定义权限Intents
存在间歇性“权限拒绝”问题。这是代码在生产和工作中的一种,但有时在制作新版本时,它会停止工作。我之前只是通过重启(设备和电脑),清理项目,卸载/重新安装,重复等过程来设法解决它...这是不可接受的。
据我所知,我正在为我在我的应用中广播的Intents
上的自定义权限做一切正确的事情。但是logcat给了我通常的错误:
on 4.2.1(Galaxy Nexus)& 4.2.2(Nexus 7)或
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.....
这些STRINGS被定义为(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 OS,或者Eclipse / Android SDK)中的问题。不幸的是,我的谷歌搜索只会让我找到常见解决方案中更常见的问题。
答案 0 :(得分:1)
最终解决方案 - 我同意这似乎没有意义,但现在是:
我有2个使用相同权限的应用 - com.test
和com.runtest
。
如上所述,DEBUG版本中com.test
已被破坏。但我注意到com.runtest
仍在工作。
步骤:
com.runtest
以确认其正常运行com.runtest
重命名为com.test
(Android工具...
重命名应用程序包)com.test
com.test
应用程序 - 它
终于工作了!因此,出于某种原因,使用正在运行的应用程序覆盖损坏的应用程序会改变某些内容并修复我的设备。