我创建了有效的动态壁纸。然后,我尝试使用config添加主要活动,但是当我点击程序列表上的图标时,“Launcher没有启动Intent的权限”错误。
ERROR/Launcher(8246): Launcher does not have the permission to launch Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.revicostudio.neonshiftwallpaper/.ConfigActivity }. Make sure to create a MAIN intent-filter for the corresponding activity or use the exported attribute for this activity. tag=ApplicationInfo(title=Neon Shift Wallpaper) intent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.revicostudio.neonshiftwallpaper/.ConfigActivity }
java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.revicostudio.neonshiftwallpaper/.ConfigActivity } from ProcessRecord{41ea3da8 8246:com.android.launcher/u0a10035} (pid=8246, uid=10035) not exported from uid 10139
清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.revicostudio.neonshiftwallpaper"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="17"/>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"
android:name="android.software.live_wallpaper">
</uses-feature>
<application
android:icon="@drawable/icon"
android:configChanges="keyboardHidden|orientation"
android:label="@string/app_name" >
<!-- Live Wallpaper Service -->
<service android:name=".MainService"
android:enabled="true"
android:configChanges="keyboardHidden|orientation"
android:permission="android.permission.BIND_WALLPAPER"
android:icon="@drawable/icon"
android:description="@string/wallpaper_description">
<intent-filter>
<action android:name="android.service.wallpaper.WallpaperService"/>
</intent-filter>
<meta-data android:name="android.service.wallpaper"
android:resource="@xml/wallpaper"/>
</service>
<activity
android:name=".ConfigActivity"
android:label="@string/app_name"
android:exported="true"
android:theme="@android:style/Theme.Light.WallpaperSettings" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.revicostudio.neonshiftwallpaper.WallpaperPreferences"
android:exported="true"
android:label="@string/app_name"
android:theme="@android:style/Theme.Light.WallpaperSettings" >
</activity>
</application>
</manifest>
答案 0 :(得分:1)
我认为这是因为当您在主屏幕上为应用程序添加快捷方式时,启动程序会从清单中保留它自己的原始意图副本,可能格式化为String而不是实际的Java对象。
因此,在通过修改过滤器或它指向的类来更改意图后,您最终会得到一个死的快捷方式。
如果发生这种情况,如果您尝试从应用程序抽屉中启动它,它应该可以正常工作。您可以从主屏幕删除快捷方式并重新添加,快捷方式应该可以正常工作。
如果您在版本之间修改主要活动的类名,则可能会发生这种情况。