2012-04-10 134 views
0

我想为我的android应用程序制作一个首选项屏幕,但我完全失败。我正在关注this guide。当我尝试安装应用程序时,我收到此错误信息,这将不是我的手机上安装应用程序:Android偏好问题

[2012-04-10 12:54:45 - AndroidCurrencyConverter] ------------------------------ 
[2012-04-10 12:54:45 - AndroidCurrencyConverter] Android Launch! 
[2012-04-10 12:54:45 - AndroidCurrencyConverter] adb is running normally. 
[2012-04-10 12:54:45 - AndroidCurrencyConverter] Performing ValutaConverter.namespace.AndroidValutaConverterActivity activity launch 
[2012-04-10 12:54:45 - AndroidCurrencyConverter] Automatic Target Mode: using device '3134BC2BBCA800EC' 
[2012-04-10 12:54:45 - AndroidCurrencyConverter] Uploading AndroidCurrencyConverter.apk onto device '3134BC2BBCA800EC' 
[2012-04-10 12:54:46 - AndroidCurrencyConverter] Installing AndroidCurrencyConverter.apk... 
[2012-04-10 12:54:49 - AndroidCurrencyConverter] Success! 
[2012-04-10 12:54:49 - AndroidCurrencyConverter] Starting activity ValutaConverter.namespace.AndroidValutaConverterActivity on device 3134BC2BBCA800EC 
[2012-04-10 12:54:52 - AndroidCurrencyConverter] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=ValutaConverter.namespace/.AndroidValutaConverterActivity } 
[2012-04-10 12:54:52 - AndroidCurrencyConverter] ActivityManager: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=ValutaConverter.namespace/.AndroidValutaConverterActivity } from null (pid=11486, uid=2000) requires android.permission.INTERNET 
[2012-04-10 12:54:52 - AndroidCurrencyConverter] ActivityManager: at android.os.Parcel.readException(Parcel.java:1327) 
[2012-04-10 12:54:52 - AndroidCurrencyConverter] ActivityManager: at android.os.Parcel.readException(Parcel.java:1281) 
[2012-04-10 12:54:52 - AndroidCurrencyConverter] ActivityManager: at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1631) 
[2012-04-10 12:54:52 - AndroidCurrencyConverter] ActivityManager: at com.android.commands.am.Am.runStart(Am.java:433) 
[2012-04-10 12:54:52 - AndroidCurrencyConverter] ActivityManager: at com.android.commands.am.Am.run(Am.java:107) 
[2012-04-10 12:54:52 - AndroidCurrencyConverter] ActivityManager: at com.android.commands.am.Am.main(Am.java:80) 
[2012-04-10 12:54:52 - AndroidCurrencyConverter] ActivityManager: at com.android.internal.os.RuntimeInit.finishInit(Native Method) 
[2012-04-10 12:54:52 - AndroidCurrencyConverter] ActivityManager: at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:238) 
[2012-04-10 12:54:52 - AndroidCurrencyConverter] ActivityManager: at dalvik.system.NativeStart.main(Native Method) 

我从这个代码明白那是什么,当它试图启动意图,它因为它需要android.permission.INTERNET而失败。但是这已经在我的清单文件中定义了。

我的应用程序在某个时间点工作,但我为我的活动添加了一些内容,添加了另一个活动以及一些XML文件。之后,它不会在手机上安装应用程序。我加了:

在活动类:

addPreferencesFromResource(R.xml.preferences); 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    menu.add(Menu.NONE, 0, 0, "Show current settings"); 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case 0: 
     startActivity(new Intent(this, ShowSettingsActivity.class)); 
     return true; 
    } 
    return false; 
} 

如果您需要了解的代码或者大家喜欢的任何其他信息,我会很高兴地发布了一些。

帮助!

+0

发布清单文件.. – user370305 2012-04-10 11:07:34

+0

请添加清单文件的内容 – Bandreid 2012-04-10 11:08:09

+0

[以下是清单文件的代码](http://pastie.org/3761284) – Loyalar 2012-04-10 11:09:54

回答

2

它应该是,

<uses-permission 
     android:name="android.permission.INTERNET" /> 
<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:configChanges="orientation|keyboardHidden|screenSize" 
     android:label="@string/app_name" 
     android:name=".AndroidValutaConverterActivity" 
     android:theme="@android:style/Theme.DeviceDefault" > 
     <intent-filter > 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".ShowSettingsActivity"/> 
</application> 

从活动标签在您的清单文件中删除。

+0

好的。我用它作为我的清单文件,但现在当我尝试安装它时,应用程序停止工作。我得到一个致命的例外:主要。 – Loyalar 2012-04-10 11:21:01

+0

在你的问题中编辑新的错误日志。 – user370305 2012-04-10 11:22:11

+0

[这是来自logcat的错误日志](http://pastie.org/3761344) – Loyalar 2012-04-10 11:24:15

1

确实,但你不允许在清单INTERNET权限(而不是,你explictely说,活动需要 INTERNET权限)。

您应该在清单的根目录处有一个<permission> element,如文档中所述。

0

有两件事要检查。

  1. 您的活动正在扩大PreferenceActivity,并

  2. 那你的布局具有该ID的Android默认的ListView:列表

    <ListView 
        android:id="@+id/android:list" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"/> 
    

而且你可能要考虑实施如果您需要处理首选项更改,请在活动中添加OnSharedPreferenceChangeListener。