0

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;
}

コードなどに関するその他の情報が必要な場合は、喜んでその一部を投稿します。

ヘルプ!

4

3 に答える 3

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>

マニフェストファイルのアクティビティタグから削除します。

于 2012-04-10T11:16:01.813 に答える
1

確かに、しかしあなたはマニフェストでインターネット許可を許可していません代わりに、あなたはアクティビティがインターネット許可を必要とすると明示的に言います)。

ドキュメントで説明されているように、マニフェストのルートに<permission>要素が必要です。

于 2012-04-10T11:15:20.230 に答える
0

確認すべき2つのこと。

  1. あなたのアクティビティはPreferenceActivityを拡張しており、

  2. レイアウトに、IDがandroid:listのデフォルトのListViewがあること

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

また、設定の変更を処理する必要がある場合は、アクティビティにOnSharedPreferenceChangeListenerを実装することを検討することをお勧めします。

于 2012-04-10T12:42:15.690 に答える