我是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"
>
答案 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获取组件名称。
特定应用程序组件的标识符(
Activity
,Service
, 可用的BroadcastReceiver
或ContentProvider
)。两件 这里封装的信息需要用来识别 component:它所在的包(String)和类(a 字符串)该包内的名称。
在AndroidManifest.xml中设置权限
<uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE>
允许应用程序更改应用程序组件 (不是它自己的)启用与否。
注意:不适用于第三方应用程序。
答案 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);
注意:在下次重新启动之前,图标可能不会消失。 因此,重新启动设备并查看应用的效果!