我的preferenceActivity显示不出来,即使它是在我的清单文件 [英] My PreferenceActivity does not show up, even though it is in my manifest file

查看:155
本文介绍了我的preferenceActivity显示不出来,即使它是在我的清单文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我修改立方体动态壁纸的例子。我有一个扩展preferenceActivity一类,我添加了活动在我的清单文件。我不断收到ActivityNotFoundExceptions。

下面是我的preference类:

 包com.ptwallpapers.mywallpaper;

进口com.p.t.wallpapers.mywallpaper.R;
进口android.content.Shared preferences;
进口android.os.Bundle;
。进口的Andr​​oid preference preferenceActivity;

公共类MySettingsActivity扩展preferenceActivity
实现共享preferences.OnShared preferenceChangeListener {

@覆盖
保护无效的onCreate(束捆){
    super.onCreate(包);
    获得preferenceManager()。setShared preferencesName(
            ParticleCandy.SHARED_ preFS_NAME);
    加preferencesFromResource(R.xml.settings);
    获得preferenceManager()。getShared preferences()。registerOnShared preferenceChangeListener(
            本);
}

@覆盖
保护无效onResume(){
    super.onResume();
}

@覆盖
保护无效的onDestroy(){
    获得preferenceManager()。getShared preferences()。unregisterOnShared preferenceChangeListener(
            本);
    super.onDestroy();
}

公共无效onShared preferenceChanged(共享preferences共享preferences,
        字符串键){
}
 

}

和这里是我的清单文件

 < XML版本=1.0编码=UTF-8&GT?;
<舱单的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
  包=com.p.t.wallpapers.mywallpaper
  安卓版code =1
  机器人:VERSIONNAME =1.0>
<应用机器人:图标=@可绘制/图标机器人:标签=@字符串/ APP_NAME>
<服务
 机器人:标签=@字符串/ APP_NAME
 机器人:名称=。MyWallpaper
 机器人:权限=android.permission.BIND_WALLPAPER>
 <意向滤光器>
  <作用
   机器人:名称=android.service.wallpaper.WallpaperService>
  < /作用>
&所述; /意图滤光器>
&所述;元数据
    机器人:名称=android.service.wallpaper
    机器人:资源=@ XML / wallpaper_info/>
< /服务>

<活动
  机器人:标签=@字符串/ SETTINGS_TITLE
    机器人:MySettingsActivityNAME =
    机器人:主题=@安卓风格/ Theme.Light.WallpaperSettings
   机器人:出口=真正的>
< /活性GT;

< /用途>
<使用-SDK安卓的minSdkVersion =7/>
<使用特征的android:NAME =android.software.live_wallpaper/>
< /舱单>
 

任何想法,为什么我的preferences活动不会得到清单读?墙纸服务,MyWallpaper显示出来就好了,但DDMS不断告诉我活动MySettingsActivity不会退出。

下面是从logcat的输出

  04-11 00:22:19.617:信息/ ActivityManager(57):启动活动:意向{CMP = com.android.wallpaper.livepicker / .LiveWallpaper preVIEW(有群众演员)}
04-11 00:22:21.796:信息/ ActivityManager(57):显示活动com.android.wallpaper.livepicker / .LiveWallpaper preVIEW:2111毫秒(共2111毫秒)
04-11 00:22:25.667:DEBUG / dalvikvm(375):GC释放4745对象/在192ms 316576字节
04-11 00:22:25.727:信息/ ActivityManager(57):启动活动:意向{CMP = com.ptwallpapers.mywallpaper / MySettingsActivity(有群众演员)}
04-11 00:22:25.757:DEBUG / AndroidRuntime(375):关闭虚拟机
04-11 00:22:25.768:WARN / dalvikvm(375):主题ID = 3:线程退出与未捕获的异常(组= 0x4001b188)
04-11 00:22:25.787:ERROR / AndroidRuntime(375):未捕获的处理程序:螺纹主力退出,由于未捕获的异常
04-11 00:22:25.847:ERROR / AndroidRuntime(375):java.lang.IllegalStateException:无法执行活动的方法
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在android.view.View $ 1.onClick(View.java:2031)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在android.view.View.performClick(View.java:2364)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在android.view.View.onTouchEvent(View.java:4179)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在android.widget.TextView.onTouchEvent(TextView.java:6540)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在android.view.View.dispatchTouchEvent(View.java:3709)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在com.android.wallpaper.livepicker.LiveWallpaper$p$pview.dispatchTouchEvent(LiveWallpaper$p$pview.java:199)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在com.android.internal.policy.impl.PhoneWindow $ DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在android.os.Handler.dispatchMessage(Handler.java:99)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在android.os.Looper.loop(Looper.java:123)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在android.app.ActivityThread.main(ActivityThread.java:4363)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在java.lang.reflect.Method.invokeNative(本机方法)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在java.lang.reflect.Method.invoke(Method.java:521)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:860)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在dalvik.system.NativeStart.main(本机方法)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):由:java.lang.reflect.InvocationTargetException
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在com.android.wallpaper.livepicker.LiveWallpaper$p$pview.configureLiveWallpaper(LiveWallpaper$p$pview.java:113)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在java.lang.reflect.Method.invokeNative(本机方法)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在java.lang.reflect.Method.invoke(Method.java:521)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在android.view.View $ 1.onClick(View.java:2026)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):20 ...更多
04-11 00:22:25.847:ERROR / AndroidRuntime(375):android.content.ActivityNotFoundException:产生的原因无法找到明确的活动类{com.ptwallpapers.mywallpaper / MySettingsActivity};有你宣布你的Andr​​oidManifest.xml这个活动?
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1404)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在android.app.Activity.startActivityForResult(Activity.java:2749)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):在android.app.Activity.startActivity(Activity.java:2855)
04-11 00:22:25.847:ERROR / AndroidRuntime(375):24 ...更多
04-11 00:22:25.917:信息/工艺(57):发送信号。 PID:375 SIG:3
04-11 00:22:25.917:信息/ dalvikvm(375):主题ID = 7:反应信号3
04-11 00:22:25.988:ERROR / ActivityThread(57):未能找到android.server.checkin供应商信息
04-11 00:22:26.012:ERROR /签(57):错误报告崩溃:java.lang.IllegalArgumentException:如果未知的URL内容://android.server.checkin/crashes
04-11 00:22:26.044:信息/ dalvikvm(375):写堆栈跟踪/data/anr/traces.txt
04-11 00:22:29.307:信息/程序(375):发送信号。 PID:375 SIG:9
04-11 00:22:29.516:信息/ ActivityManager(57):过程android.process.acore(PID 375)已经死亡。
04-11 00:22:29.516:信息/窗口管理器(57):WIN死亡:窗口{44dd50d8媒体:com.android.wallpaper.livepicker / com.android.wallpaper.livepicker.LiveWallpaper preVIEW暂停= FALSE}
04-11 00:22:29.576:信息/窗口管理器(57):WIN死亡:窗口{44d660f8 com.android.wallpaper.livepicker / com.android.wallpaper.livepicker.LiveWallpaperListActivity暂停= FALSE}
04-11 00:22:29.586:信息/窗口管理器(57):WIN死亡:窗口{44dbe2f0 com.android.wallpaper.livepicker / com.android.wallpaper.livepicker.LiveWallpaper preVIEW暂停= FALSE}
04-11 00:22:29.876:信息/ ActivityManager(57):启动PROC android.process.acore的活动com.android.wallpaper.livepicker / .LiveWallpaperListActivity:PID = 421 UID = 10022导报= {}
04-11 00:22:30.687:DEBUG / DDM堆(421):GOT功能列表请求
04-11 00:22:30.957:​​信息/ UsageStats(57):com.android.wallpaper.livepicker意外的简历时,如果已经恢复了com.android.wallpaper.livepicker
04-11 00:22:31.756:WARN /的ResourceType(421):getEntry失败,因为entryIndex 2超出型entryCount 2
04-11 00:22:31.768:WARN /的ResourceType(421):失败的包0获得了0x7f040002(T = 3:E = 2)项:0x80000001
04-11 00:22:32.758:WARN / InputManagerService(57):得到的RemoteException发送SETACTIVE(假)通知,为PID 375 UID 10022
04-11 00:22:33.137:信息/ ActivityManager(57):显示活动com.android.wallpaper.livepicker / .LiveWallpaperListActivity:3430毫秒(共3430毫秒)
04-11 00:22:33.528:ERROR / gralloc(57):[注销]处理0x467ae8仍处于锁定状态(状态= 40000001)
04-11 00:22:38.368:DEBUG / dalvikvm(364):GC释放611对象/在179ms 51656字节
 

更新的logcat

  1月4号至11号:10:52.976:信息/ ActivityManager(57):启动活动:意向{行动= android.intent.action.CHOOSER CMP =机器人/ com.android。 internal.app.ChooserActivity(有群众演员)}
一月4号至11号:10:53.668:WARN / InputManagerService(57):窗口已经集中,忽略了聚焦增益:com.android.internal.view.IInputMethodClient$Stub$Proxy@44db02f8
一月4号至11号:10:54.587:信息/ ActivityManager(57):显示活动的android / com.android.internal.app.ChooserActivity:1140毫秒(共17760毫秒)
一月4号至11号:10:56.458:信息/ ActivityManager(57):启动活动:意向{行动= android.intent.action.SET_WALLPAPER FLG = 0x3000000 CMP = com.android.wallpaper.livepicker / .LiveWallpaperListActivity}
一月4号至11号:10:57.466:DEBUG / dalvikvm(1622):GC释放1487​​对象/ 106648字节167ms
一月4号至11号:10:57.556:WARN /的ResourceType(1622):getEntry失败,因为entryIndex 2超出型entryCount 2
一月4号至11号:10:57.587:WARN /的ResourceType(1622):失败的包装0获得了0x7f040002(T = 3:E = 2)项:0x80000001
一月4号至11号:10:58.516:信息/ ActivityManager(57):显示活动com.android.wallpaper.livepicker / .LiveWallpaperListActivity:1625毫秒(共1625毫秒)
一月4号至11号:11:00.717:信息/ ActivityManager(57):启动活动:意向{CMP = com.android.wallpaper.livepicker / .LiveWallpaper preVIEW(有群众演员)}
一月4号至11号:11:02.948:信息/ ActivityManager(57):显示活动com.android.wallpaper.livepicker / .LiveWallpaper preVIEW:2187毫秒(共2187毫秒)
一月4号至11号:11:11.538:信息/ ActivityManager(57):启动活动:意向{CMP = com.ptwallpapers.mywallpaper / MySettingsActivity(有群众演员)}
一月4号至11号:11:11.577:DEBUG / AndroidRuntime(1622):关闭虚拟机
一月4号至11号:11:11.587:WARN / dalvikvm(1622):主题ID = 3:线程退出与未捕获的异常(组= 0x4001b188)
一月4号至11号:11:11.597:ERROR / AndroidRuntime(1622):未捕获的处理程序:螺纹主力退出,由于未捕获的异常
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):java.lang.IllegalStateException:无法执行活动的方法
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在android.view.View $ 1.onClick(View.java:2031)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在android.view.View.performClick(View.java:2364)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在android.view.View.onTouchEvent(View.java:4179)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在android.widget.TextView.onTouchEvent(TextView.java:6540)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在android.view.View.dispatchTouchEvent(View.java:3709)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在com.android.wallpaper.livepicker.LiveWallpaper$p$pview.dispatchTouchEvent(LiveWallpaper$p$pview.java:199)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在com.android.internal.policy.impl.PhoneWindow $ DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在android.os.Handler.dispatchMessage(Handler.java:99)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在android.os.Looper.loop(Looper.java:123)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在android.app.ActivityThread.main(ActivityThread.java:4363)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在java.lang.reflect.Method.invokeNative(本机方法)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在java.lang.reflect.Method.invoke(Method.java:521)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:860)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在dalvik.system.NativeStart.main(本机方法)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):由:java.lang.reflect.InvocationTargetException
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在com.android.wallpaper.livepicker.LiveWallpaper$p$pview.configureLiveWallpaper(LiveWallpaper$p$pview.java:113)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在java.lang.reflect.Method.invokeNative(本机方法)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在java.lang.reflect.Method.invoke(Method.java:521)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在android.view.View $ 1.onClick(View.java:2026)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):20 ...更多
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622年):android.content.ActivityNotFoundException:产生的原因无法找到明确的活动类{com.ptwallpapers.mywallpaper / MySettingsActivity};有你宣布你的Andr​​oidManifest.xml这个活动?
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1404)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在android.app.Activity.startActivityForResult(Activity.java:2749)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):在android.app.Activity.startActivity(Activity.java:2855)
一月4号至11号:11:11.667:ERROR / AndroidRuntime(1622):24 ...更多
一月4号至11号:11:11.748:信息/工艺(57):发送信号。 PID:1622 SIG:3
一月4号至11号:11:11.748:信息/ dalvikvm(1622):主题ID = 7:反应信号3
一月4号至11号:11:11.827:信息/ dalvikvm(1622):写堆栈跟踪/data/anr/traces.txt
一月4号至11号:11:11.858:ERROR / ActivityThread(57):未能找到android.server.checkin供应商信息
一月4号至11号:11:11.877:ERROR /签(57):错误报告崩溃:java.lang.IllegalArgumentException:如果未知的URL内容://android.server.checkin/crashes
一月4号至11号:11:13.788:DEBUG / dalvikvm(101):GC释放3389对象/在2805ms 203632字节
一月4号至11号:11:16.787:INFO /过程(1622年):发送信号。 PID:1622 SIG:9
一月4号至11号:11:17.037:信息/ ActivityManager(57):过程android.process.acore(PID 1622)已死亡。
一月4号至11号:11:17.046:信息/窗口管理器(57):WIN死亡:窗口{44db47b0媒体:com.android.wallpaper.livepicker / com.android.wallpaper.livepicker.LiveWallpaper preVIEW暂停= FALSE}
一月4号至11号:11:17.107:信息/窗口管理器(57):WIN死亡:窗口{44db7138 com.android.wallpaper.livepicker / com.android.wallpaper.livepicker.LiveWallpaperListActivity暂停= FALSE}
一月4号至11号:11:17.208:信息/窗口管理器(57):WIN死亡:窗口{44da6860 com.android.wallpaper.livepicker / com.android.wallpaper.livepicker.LiveWallpaper preVIEW暂停= FALSE}
一月4号至11号:11:17.426:信息/ ActivityManager(57):启动PROC android.process.acore的活动com.android.wallpaper.livepicker / .LiveWallpaperListActivity:PID = 1647的uid = 10022导报= {}
一月4号至11号:11:18.266:DEBUG / dalvikvm(30):GC释放222对象/在799ms 8512字节
一月4号至11号:11:18.577:DEBUG / DDM堆(1647年):GOT功能列表请求
一月4号至11号:11:18.686:DEBUG / dalvikvm(30):GC释放2个对象/在406ms 56个字节
一月4号至11号:11:19.037:信息/ UsageStats(57):com.android.wallpaper.livepicker意外的简历时,如果已经恢复了com.android.wallpaper.livepicker
一月4号至11号:11:19.367:DEBUG / dalvikvm(30):GC释放2个对象/在652ms 56个字节
一月4号至11号:11:19.827:WARN /的ResourceType(1647年):getEntry失败,因为entryIndex 2超出型entryCount 2
一月4号至11号:11:19.837:WARN /的ResourceType(1647年):失败的包装0获得了0x7f040002(T = 3:E = 2)项:0x80000001
一月4号至11号:11:20.378:WARN / InputManagerService(57):得到的RemoteException发送SETACTIVE(假)通知,为PID 1622 UID 10022
一月4号至11号:11:20.737:信息/ ActivityManager(57):显示活动com.android.wallpaper.livepicker / .LiveWallpaperListActivity:3496毫秒(共3496毫秒)
一月4号至11号:11:21.117:ERROR / gralloc(57):[注销]处理0x448168仍处于锁定状态(状态= 40000001)
一月4号至11号:23:24.496:调试/ dalvikvm(98):GC释放12398对象/在213ms 575024字节
 

解决方案

想通了。这是所引用的清单,在服务标签中的元数据标签下的墙纸XML。基本上,XML有

 <壁纸
    的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    机器人:settingsActivity =MySettingsActivity/>
 

请注意MySettingsActivity呢?是啊,因为这是从清单单独的文件,它不会自动有一个包就开始从搜索类名。因此,所有我所要做的就是把完整的包路径,像这样

 <壁纸
的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
机器人:settingsActivity =com.ptwallpapers.mywallpaper.MySettingsActivity/>
 

和瞧!我的preference屏幕上弹出现在当我打的,而不是武力的设置...按钮,崩溃。哦,的 facepalm 的!

So I am modifying the Cube live wallpaper example. I have a class that extends PreferenceActivity, and I added the Activity in my manifest file. I keep getting ActivityNotFoundExceptions.

Here is my preference class :

package com.p.t.wallpapers.mywallpaper;

import com.p.t.wallpapers.mywallpaper.R;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceActivity;

public class MySettingsActivity extends PreferenceActivity
implements SharedPreferences.OnSharedPreferenceChangeListener {

@Override
protected void onCreate(Bundle bundle) {
    super.onCreate(bundle);
    getPreferenceManager().setSharedPreferencesName(
            ParticleCandy.SHARED_PREFS_NAME);
    addPreferencesFromResource(R.xml.settings);
    getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(
            this);
}

@Override
protected void onResume() {
    super.onResume();
}

@Override
protected void onDestroy() {
    getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(
            this);
    super.onDestroy();
}

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
        String key) {
}

}

And here is my manifest file

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.p.t.wallpapers.mywallpaper"
  android:versionCode="1"
  android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<service 
 android:label="@string/app_name" 
 android:name=".MyWallpaper" 
 android:permission="android.permission.BIND_WALLPAPER" >
 <intent-filter>
  <action 
   android:name="android.service.wallpaper.WallpaperService">
  </action>
</intent-filter>
<meta-data 
    android:name="android.service.wallpaper" 
    android:resource="@xml/wallpaper_info" />  
</service>

<activity
  android:label="@string/settings_title"
    android:name=".MySettingsActivity"
    android:theme="@android:style/Theme.Light.WallpaperSettings"
   android:exported="true">
</activity>

</application>
<uses-sdk android:minSdkVersion="7" />
<uses-feature android:name="android.software.live_wallpaper" />
</manifest> 

Any ideas why my preferences activity doesn't get read in from the manifest? The wallpaper service, MyWallpaper shows up just fine, but DDMS keeps telling me the activity MySettingsActivity doesn't exit.

Here is output from logcat

04-11 00:22:19.617: INFO/ActivityManager(57): Starting activity: Intent { cmp=com.android.wallpaper.livepicker/.LiveWallpaperPreview (has extras) }
04-11 00:22:21.796: INFO/ActivityManager(57): Displayed activity com.android.wallpaper.livepicker/.LiveWallpaperPreview: 2111 ms (total 2111 ms)
04-11 00:22:25.667: DEBUG/dalvikvm(375): GC freed 4745 objects / 316576 bytes in 192ms
04-11 00:22:25.727: INFO/ActivityManager(57): Starting activity: Intent { cmp=com.p.t.wallpapers.mywallpaper/MySettingsActivity (has extras) }
04-11 00:22:25.757: DEBUG/AndroidRuntime(375): Shutting down VM
04-11 00:22:25.768: WARN/dalvikvm(375): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
04-11 00:22:25.787: ERROR/AndroidRuntime(375): Uncaught handler: thread main exiting due to uncaught exception
04-11 00:22:25.847: ERROR/AndroidRuntime(375): java.lang.IllegalStateException: Could not execute method of the activity
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at android.view.View$1.onClick(View.java:2031)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at android.view.View.performClick(View.java:2364)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at android.view.View.onTouchEvent(View.java:4179)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at android.widget.TextView.onTouchEvent(TextView.java:6540)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at android.view.View.dispatchTouchEvent(View.java:3709)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at com.android.wallpaper.livepicker.LiveWallpaperPreview.dispatchTouchEvent(LiveWallpaperPreview.java:199)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at android.os.Looper.loop(Looper.java:123)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at android.app.ActivityThread.main(ActivityThread.java:4363)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at java.lang.reflect.Method.invokeNative(Native Method)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at java.lang.reflect.Method.invoke(Method.java:521)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at dalvik.system.NativeStart.main(Native Method)
04-11 00:22:25.847: ERROR/AndroidRuntime(375): Caused by: java.lang.reflect.InvocationTargetException
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at com.android.wallpaper.livepicker.LiveWallpaperPreview.configureLiveWallpaper(LiveWallpaperPreview.java:113)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at java.lang.reflect.Method.invokeNative(Native Method)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at java.lang.reflect.Method.invoke(Method.java:521)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at android.view.View$1.onClick(View.java:2026)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     ... 20 more
04-11 00:22:25.847: ERROR/AndroidRuntime(375): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.p.t.wallpapers.mywallpaper/MySettingsActivity}; have you declared this activity in your AndroidManifest.xml?
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1404)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at android.app.Activity.startActivityForResult(Activity.java:2749)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     at android.app.Activity.startActivity(Activity.java:2855)
04-11 00:22:25.847: ERROR/AndroidRuntime(375):     ... 24 more
04-11 00:22:25.917: INFO/Process(57): Sending signal. PID: 375 SIG: 3
04-11 00:22:25.917: INFO/dalvikvm(375): threadid=7: reacting to signal 3
04-11 00:22:25.988: ERROR/ActivityThread(57): Failed to find provider info for android.server.checkin
04-11 00:22:26.012: ERROR/Checkin(57): Error reporting crash: java.lang.IllegalArgumentException: Unknown URL content://android.server.checkin/crashes
04-11 00:22:26.044: INFO/dalvikvm(375): Wrote stack trace to '/data/anr/traces.txt'
04-11 00:22:29.307: INFO/Process(375): Sending signal. PID: 375 SIG: 9
04-11 00:22:29.516: INFO/ActivityManager(57): Process android.process.acore (pid 375) has died.
04-11 00:22:29.516: INFO/WindowManager(57): WIN DEATH: Window{44dd50d8 Media:com.android.wallpaper.livepicker/com.android.wallpaper.livepicker.LiveWallpaperPreview paused=false}
04-11 00:22:29.576: INFO/WindowManager(57): WIN DEATH: Window{44d660f8 com.android.wallpaper.livepicker/com.android.wallpaper.livepicker.LiveWallpaperListActivity paused=false}
04-11 00:22:29.586: INFO/WindowManager(57): WIN DEATH: Window{44dbe2f0 com.android.wallpaper.livepicker/com.android.wallpaper.livepicker.LiveWallpaperPreview paused=false}
04-11 00:22:29.876: INFO/ActivityManager(57): Start proc android.process.acore for activity com.android.wallpaper.livepicker/.LiveWallpaperListActivity: pid=421 uid=10022 gids={}
04-11 00:22:30.687: DEBUG/ddm-heap(421): Got feature list request
04-11 00:22:30.957: INFO/UsageStats(57): Unexpected resume of com.android.wallpaper.livepicker while already resumed in com.android.wallpaper.livepicker
04-11 00:22:31.756: WARN/ResourceType(421): getEntry failing because entryIndex 2 is beyond type entryCount 2
04-11 00:22:31.768: WARN/ResourceType(421): Failure getting entry for 0x7f040002 (t=3 e=2) in package 0: 0x80000001
04-11 00:22:32.758: WARN/InputManagerService(57): Got RemoteException sending setActive(false) notification to pid 375 uid 10022
04-11 00:22:33.137: INFO/ActivityManager(57): Displayed activity com.android.wallpaper.livepicker/.LiveWallpaperListActivity: 3430 ms (total 3430 ms)
04-11 00:22:33.528: ERROR/gralloc(57): [unregister] handle 0x467ae8 still locked (state=40000001)
04-11 00:22:38.368: DEBUG/dalvikvm(364): GC freed 611 objects / 51656 bytes in 179ms

Updated logcat

04-11 01:10:52.976: INFO/ActivityManager(57): Starting activity: Intent { act=android.intent.action.CHOOSER cmp=android/com.android.internal.app.ChooserActivity (has extras) }
04-11 01:10:53.668: WARN/InputManagerService(57): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@44db02f8
04-11 01:10:54.587: INFO/ActivityManager(57): Displayed activity android/com.android.internal.app.ChooserActivity: 1140 ms (total 17760 ms)
04-11 01:10:56.458: INFO/ActivityManager(57): Starting activity: Intent { act=android.intent.action.SET_WALLPAPER flg=0x3000000 cmp=com.android.wallpaper.livepicker/.LiveWallpaperListActivity }
04-11 01:10:57.466: DEBUG/dalvikvm(1622): GC freed 1487 objects / 106648 bytes in 167ms
04-11 01:10:57.556: WARN/ResourceType(1622): getEntry failing because entryIndex 2 is beyond type entryCount 2
04-11 01:10:57.587: WARN/ResourceType(1622): Failure getting entry for 0x7f040002 (t=3 e=2) in package 0: 0x80000001
04-11 01:10:58.516: INFO/ActivityManager(57): Displayed activity com.android.wallpaper.livepicker/.LiveWallpaperListActivity: 1625 ms (total 1625 ms)
04-11 01:11:00.717: INFO/ActivityManager(57): Starting activity: Intent { cmp=com.android.wallpaper.livepicker/.LiveWallpaperPreview (has extras) }
04-11 01:11:02.948: INFO/ActivityManager(57): Displayed activity com.android.wallpaper.livepicker/.LiveWallpaperPreview: 2187 ms (total 2187 ms)
04-11 01:11:11.538: INFO/ActivityManager(57): Starting activity: Intent { cmp=com.p.t.wallpapers.mywallpaper/MySettingsActivity (has extras) }
04-11 01:11:11.577: DEBUG/AndroidRuntime(1622): Shutting down VM
04-11 01:11:11.587: WARN/dalvikvm(1622): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
04-11 01:11:11.597: ERROR/AndroidRuntime(1622): Uncaught handler: thread main exiting due to uncaught exception
04-11 01:11:11.667: ERROR/AndroidRuntime(1622): java.lang.IllegalStateException: Could not execute method of the activity
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at android.view.View$1.onClick(View.java:2031)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at android.view.View.performClick(View.java:2364)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at android.view.View.onTouchEvent(View.java:4179)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at android.widget.TextView.onTouchEvent(TextView.java:6540)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at android.view.View.dispatchTouchEvent(View.java:3709)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at com.android.wallpaper.livepicker.LiveWallpaperPreview.dispatchTouchEvent(LiveWallpaperPreview.java:199)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at android.os.Looper.loop(Looper.java:123)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at android.app.ActivityThread.main(ActivityThread.java:4363)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at java.lang.reflect.Method.invokeNative(Native Method)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at java.lang.reflect.Method.invoke(Method.java:521)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at dalvik.system.NativeStart.main(Native Method)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622): Caused by: java.lang.reflect.InvocationTargetException
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at com.android.wallpaper.livepicker.LiveWallpaperPreview.configureLiveWallpaper(LiveWallpaperPreview.java:113)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at java.lang.reflect.Method.invokeNative(Native Method)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at java.lang.reflect.Method.invoke(Method.java:521)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at android.view.View$1.onClick(View.java:2026)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     ... 20 more
04-11 01:11:11.667: ERROR/AndroidRuntime(1622): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.p.t.wallpapers.mywallpaper/MySettingsActivity}; have you declared this activity in your AndroidManifest.xml?
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1404)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at android.app.Activity.startActivityForResult(Activity.java:2749)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     at android.app.Activity.startActivity(Activity.java:2855)
04-11 01:11:11.667: ERROR/AndroidRuntime(1622):     ... 24 more
04-11 01:11:11.748: INFO/Process(57): Sending signal. PID: 1622 SIG: 3
04-11 01:11:11.748: INFO/dalvikvm(1622): threadid=7: reacting to signal 3
04-11 01:11:11.827: INFO/dalvikvm(1622): Wrote stack trace to '/data/anr/traces.txt'
04-11 01:11:11.858: ERROR/ActivityThread(57): Failed to find provider info for android.server.checkin
04-11 01:11:11.877: ERROR/Checkin(57): Error reporting crash: java.lang.IllegalArgumentException: Unknown URL content://android.server.checkin/crashes
04-11 01:11:13.788: DEBUG/dalvikvm(101): GC freed 3389 objects / 203632 bytes in 2805ms
04-11 01:11:16.787: INFO/Process(1622): Sending signal. PID: 1622 SIG: 9
04-11 01:11:17.037: INFO/ActivityManager(57): Process android.process.acore (pid 1622) has died.
04-11 01:11:17.046: INFO/WindowManager(57): WIN DEATH: Window{44db47b0 Media:com.android.wallpaper.livepicker/com.android.wallpaper.livepicker.LiveWallpaperPreview paused=false}
04-11 01:11:17.107: INFO/WindowManager(57): WIN DEATH: Window{44db7138 com.android.wallpaper.livepicker/com.android.wallpaper.livepicker.LiveWallpaperListActivity paused=false}
04-11 01:11:17.208: INFO/WindowManager(57): WIN DEATH: Window{44da6860 com.android.wallpaper.livepicker/com.android.wallpaper.livepicker.LiveWallpaperPreview paused=false}
04-11 01:11:17.426: INFO/ActivityManager(57): Start proc android.process.acore for activity com.android.wallpaper.livepicker/.LiveWallpaperListActivity: pid=1647 uid=10022 gids={}
04-11 01:11:18.266: DEBUG/dalvikvm(30): GC freed 222 objects / 8512 bytes in 799ms
04-11 01:11:18.577: DEBUG/ddm-heap(1647): Got feature list request
04-11 01:11:18.686: DEBUG/dalvikvm(30): GC freed 2 objects / 56 bytes in 406ms
04-11 01:11:19.037: INFO/UsageStats(57): Unexpected resume of com.android.wallpaper.livepicker while already resumed in com.android.wallpaper.livepicker
04-11 01:11:19.367: DEBUG/dalvikvm(30): GC freed 2 objects / 56 bytes in 652ms
04-11 01:11:19.827: WARN/ResourceType(1647): getEntry failing because entryIndex 2 is beyond type entryCount 2
04-11 01:11:19.837: WARN/ResourceType(1647): Failure getting entry for 0x7f040002 (t=3 e=2) in package 0: 0x80000001
04-11 01:11:20.378: WARN/InputManagerService(57): Got RemoteException sending setActive(false) notification to pid 1622 uid 10022
04-11 01:11:20.737: INFO/ActivityManager(57): Displayed activity com.android.wallpaper.livepicker/.LiveWallpaperListActivity: 3496 ms (total 3496 ms)
04-11 01:11:21.117: ERROR/gralloc(57): [unregister] handle 0x448168 still locked (state=40000001)
04-11 01:23:24.496: DEBUG/dalvikvm(98): GC freed 12398 objects / 575024 bytes in 213ms

解决方案

Figured it out. It was the wallpaper xml that is referenced in the manifest, under the meta data tag in the service tag. Basically, that xml has

<wallpaper 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:settingsActivity="MySettingsActivity"/>

Notice the "MySettingsActivity" there? Yeah, since this is a separate file from the manifest, it doesn't automatically have a package it starts searching class names from. So all I had to do was put the full package path, like so

<wallpaper 
xmlns:android="http://schemas.android.com/apk/res/android"
android:settingsActivity="com.p.t.wallpapers.mywallpaper.MySettingsActivity" />

and voila! My preference screen pops up now when I hit the Settings... button, instead of force crashing. Oh man, facepalm!

这篇关于我的preferenceActivity显示不出来,即使它是在我的清单文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆