0

インストールされているアプリのリストを表示するアプリを作成しており、アイテムをクリックすると許可が表示されます。また、バックグラウンドで実行され、デバイスの起動時に開始されます。Motorola Milestone (Android 2.1) では完全に動作しますが、Sony Xperia (ICS) でテストすると、リストがクリックされず、許可を示すアクティビティが表示されません。

LogCat は、エラー モードでは何も表示しません。

主な活動

package com.example.appslist;

import java.util.List;
import com.example.appslist.adapter.ApkAdapter;
import com.example.appslist.app.AppData;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import com.example.backgroundapp.BackgroundService;






public class ApkListActivity extends Activity implements OnItemClickListener {

    PackageManager packageManager;
    public static boolean isService = false;





    @Override
    public void onCreate(Bundle savedInstanceState) {


        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        startService(new Intent(ApkListActivity.this,BackgroundService.class));
        Intent startMain = new Intent(Intent.ACTION_MAIN);
        startMain.addCategory(Intent.CATEGORY_HOME);
        startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(startMain);
        isService = true;


        packageManager = getPackageManager();
        List<PackageInfo> packageList = packageManager
                .getInstalledPackages(PackageManager.GET_PERMISSIONS);

        ListView mylistview= (ListView) findViewById(android.R.id.list);
        mylistview.setAdapter(new ApkAdapter(this, packageList, packageManager));
        mylistview.setOnItemClickListener(this);
        }





    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long row) {
        super.onResume();
        stopService(new Intent(ApkListActivity.this,
                BackgroundService.class));

        PackageInfo packageInfo = (PackageInfo) parent
                .getItemAtPosition(position);
        AppData appData = (AppData) getApplication();
        appData.setPackageInfo(packageInfo);

        Intent appInfo = new Intent(ApkListActivity.this, ApkInfo.class);
        startActivity(appInfo);
    }
}

マニフェスト

  <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.appslist"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

   <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />



    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" 
    android:name=".app.AppData">

        <activity
            android:name="com.example.appslist.ApkListActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".ApkInfo"
            android:label="@string/title_activity_apk_info" >
        </activity>

      <service android:enabled="true" android:name=".BackgroundService" />

      <receiver 
          android:enabled="true" 
          android:name="com.example.appslist.BootUpReceiver"
        >

        <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
``</receiver>







</application>


    </manifest>

助けてください

4

2 に答える 2

1

あなたはまだこの問題を抱えていますか?その場合、他の Android 4.X+ デバイスで実行してみて、動作するかどうかを確認しましたか? Xperia 固有の問題である場合はお知らせください。詳しく調査いたします。また、Xperia固有の場合、どのデバイスモデルでテストしていますか?

于 2013-07-09T22:14:24.757 に答える
0

PackageInfoそのデータを格納するためにクラスを拡張するという奇妙な実装ではなくParcelable、アクティビティにインテント エクストラとして渡さない理由を実装します。ApkInfoApplication

onCreateまた、サービスとメインアクティビティを開始してから、クリックでサービスを停止することで、ここで何をしているのかわかりません。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    startService(new Intent(ApkListActivity.this,BackgroundService.class));
    Intent startMain = new Intent(Intent.ACTION_MAIN);
    startMain.addCategory(Intent.CATEGORY_HOME);
    startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(startMain);
    isService = true;
...
于 2013-04-20T11:27:34.553 に答える