3
public class MyMainActivity extends ListActivity {
    int x;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        loadApps();

    }

    private void loadApps() {
        Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);

        List<ResolveInfo> mApps = getPackageManager().queryIntentActivities(
                mainIntent, 0);

        ListView listView = getListView();
        listView.setAdapter(new AppsAdapter(this, mApps));
    }

    public class AppsAdapter extends BaseAdapter {
        private LayoutInflater inflater;
        private List<ResolveInfo> mApps;

        public AppsAdapter(Context context, List<ResolveInfo> mApps) {
            this.inflater = LayoutInflater.from(context);
            this.mApps = mApps;
        }

        class ViewHandler {
            TextView textLable;
            ImageView iconImage;
            Button buttn;

        }

        public View getView(final int position, View convertView,
                ViewGroup parent) {
            final ViewHandler Handler;
            if (convertView == null) {
                convertView = inflater.inflate(R.layout.customlist, null);
                Handler = new ViewHandler();
                Handler.textLable = (TextView) convertView
                        .findViewById(R.id.TV);
                Handler.iconImage = (ImageView) convertView
                        .findViewById(R.id.IV);
                Handler.buttn = (Button) convertView.findViewById(R.id.buttonx);
                convertView.setTag(Handler);
            } else {
                Handler = (ViewHandler) convertView.getTag();

            }

            ResolveInfo info = this.mApps.get(position);
            Handler.iconImage.setImageDrawable(info
                    .loadIcon(getPackageManager()));

            Handler.textLable.setText(info.loadLabel(getPackageManager()));
            Handler.buttn.setOnClickListener(new OnClickListener() {
                boolean isClicked = false;

                @Override
                public void onClick(View v) {

                    if (isClicked == false) {

                        Handler.buttn.setBackgroundResource(R.drawable.locker);
                        Toast.makeText(getApplicationContext(), "" + position,
                                Toast.LENGTH_SHORT).show();
                        isClicked = true;
                    } else {
                        Handler.buttn
                                .setBackgroundResource(R.drawable.unlocked);
                        isClicked = false;
                    }

                }
            });

            return convertView;

        }

        public final int getCount() {
            return mApps.size();
        }

        public final Object getItem(int position) {
            return mApps.get(position);
        }

        public final long getItemId(int position) {
            return position;
        }

    }

}

メニューのすべてのアプリケーションからアプリケーションを非表示にするにはどうすればよいですか? アプリケーションを非表示にするため、セキュリティのため、または自分のアプリケーションを使用するアプリを非表示にしたい場合の個人的な理由から、アプリケーションを作成したいだけです。そのため、アプリケーションを非表示にする方法を知りたいのです。

4

2 に答える 2

0

以下を使用してアプリを非表示にできます。

PackageManager pm = getApplicationContext().getPackageManager();
pm.setComponentEnabledSetting(<component of the main Activity of the app you want to hide>, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

これによりアプリも無効になるため、それ以上のインテントなどには応答しないことに注意してください。アプリを有効のままにしたい場合は、独自のホーム画面を作成し、ユーザーがアイコンを非表示にできるようにする必要があります。ユーザーがアイコンを非表示にすると、ランチャーがそのアイコンをリストに表示しないようにすることができます。

于 2013-03-28T10:41:10.027 に答える
0

とても簡単です。

Packagename を持っている場合 (簡単に取得できます!)、次のコードで無効化を有効にできます。そのためにはアクセス許可が必要であり、他のアプリを変更できないことに注意してください (ユーザー ID のため)。

public void disableDrawerIcon(String component) {
try {
    PackageManager pm = _context.getApplicationContext()
        .getPackageManager();

    Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);

    List<ResolveInfo> appList = pm.queryIntentActivities(mainIntent, 0);
    Collections
        .sort(appList, new ResolveInfo.DisplayNameComparator(pm));
    ComponentName componentName = null;

    for (ResolveInfo temp : appList) {

    if (temp.activityInfo.packageName.equals(component)) {

        componentName = new ComponentName(component,
            temp.activityInfo.name);
    }

    }

    if (componentName != null) {
    pm.setComponentEnabledSetting(componentName,
        PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
        PackageManager.DONT_KILL_APP);
    CustomLogger.log(TAG, "Icon disabled", _context);
    }
} catch (Exception e) {
    e.printStackTrace();
}
}

public void enableDrawerIcon(String component) {
try {
    PackageManager pm = _context.getApplicationContext()
        .getPackageManager();

    Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);

    List<ResolveInfo> appList = pm.queryIntentActivities(mainIntent, 0);
    Collections
        .sort(appList, new ResolveInfo.DisplayNameComparator(pm));
    ComponentName componentName = null;

    for (ResolveInfo temp : appList) {

    if (temp.activityInfo.packageName.equals(component)) {

        componentName = new ComponentName(component,
            temp.activityInfo.name);
    }

    }

    if (componentName != null) {

    }
    pm.setComponentEnabledSetting(componentName,
        PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
        PackageManager.DONT_KILL_APP);
    CustomLogger.log(TAG, "Icon enabled", _context);
} catch (Exception e) {
    e.printStackTrace();
}
}
于 2013-04-12T12:47:28.693 に答える