03-23 13:25:01.580: ERROR/AndroidRuntime(3319): Caused by: java.lang.SecurityException: Not allowed to start service Intent { cmp=com.test/.MyWallpaperService } without permission android.permission.BIND_WALLPAPER
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.test"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
    
    
        <activity android:name=".Main"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
 <service
            android:name=".MyWallpaperService"
            android:permission="android.permission.BIND_WALLPAPER"
            android:id="@+id/myWallSer">
             <intent-filter>
                <action android:name="com.test.MyWallpaperService"/>
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            
        </service>
    </application>
</manifest> 

解决方案 »

  1.   

    使用这个 android.service.wallpaper.WallpaperService 才能用 android.permission.BIND_WALLPAPER,,或则说 没有正确的使用 WallpaperService
      

  2.   

    更新墙纸需要权限,一般在安装apk的时候都会告知用户软件需要什么权限。所以,你需要在
    application声明的上面再增加一句:
     <uses-permission android:name="android.permission.BIND_WALLPAPER" />
      

  3.   

    是因为没加上这句话
    <wallpaper xmlns:android="http://schemas.android.com/apk/res/android"
            android:settingsActivity="com.test/.MyWallpaperService "
    />
      

  4.   

    请教一下:
    <wallpaper xmlns:android="http://schemas.android.com/apk/res/android"
      android:settingsActivity="com.test/.MyWallpaperService "
    />
    是什么意思啊?加在哪?为什么加上这句话就可以了?