如何从我的启动器android隐藏应用程序图标

时间:2015-01-20 06:55:12

标签: android launcher

我是android的新手我从Tutorial创建了Simple launcher 我在listview appdetails(app lable,icon,package)中显示所有应用程序

我想隐藏我想要的应用程序图标..

我想隐藏 但我无法理解如何获取其他应用程序的组件名称

private void addClickListener() {
    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> av, View v, int pos,
                long id) {

            ComponentName componentName = new ComponentName(apps.get(pos).name.toString());, apps.get(pos).name.toString());.LauncherActivity);
         manager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
            /*Intent i = manager.getLaunchIntentForPackage(apps.get(pos).name.toString());
            AppsListActivity.this.startActivity(i);*/
        }
    });

这是我尝试但不工作的代码

告诉我我做错了什么,我应该做什么

请提前

修改

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ah.hathi.simplelauncher"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="20" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"/>

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

<activity
android:name="ah.hathi.simplelauncher.HomeActivity"
android:label="Simple Launcher Home"
android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen"
android:launchMode="singleTask"
android:stateNotNeeded="true"
>
<intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.HOME" />
  <category android:name="android.intent.category.DEFAULT" />
</intent-filter>         

<activity
android:name="ah.hathi.simplelauncher.AppsListActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
>            

    

2 个答案:

答案 0 :(得分:0)

您可以通过PackageManager.setComponentEnabledSetting()禁用某个组件,这样可以将其从启动器中删除。

在Android中列出组件名称:

以下是获取Android上安装的活动/应用程序列表的代码

final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
final List packageList = context.getPackageManager().queryIntentActivities( mainIntent, 0);

您可以从packageList获取组件名称。

ComponentName

  

特定应用程序组件的标识符(ActivityService,   可用的BroadcastReceiverContentProvider)。两件   这里封装的信息需要用来识别   component:它所在的包(String)和类(a   字符串)该包内的名称。

在AndroidManifest.xml中设置权限

<uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE>

来自Android Developers

  

允许应用程序更改应用程序组件   (不是它自己的)启用与否。

     

注意:不适用于第三方应用程序。

答案 1 :(得分:0)

试用此代码:

PackageManager p = getPackageManager();
p.setComponentEnabledSetting(getComponentName(), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

或试试这个:

PackageManager pm = this.getPackageManager();
pm.setComponentEnabledSetting(new ComponentName("com.google.android.talk",
    "com.google.android.talk.LAUNCHER"),
    PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
    PackageManager.DONT_KILL_APP);

注意:在下次重新启动之前,图标可能不会消失。 因此,重新启动设备并查看应用的效果!