Удалить значок приложения из ящика не работает в Android 4.1
У меня есть приложение, которое установлено в телефоне пользователя и остается скрытым от приложения Drawer. Чтобы добиться этого, нужно было только удалить теги intent-filter, это отлично работает для всего, что ниже ICS 4.0, любая помощь, чтобы заставить его работать в ICS?
Это отлично работает в пряниках и фройо, запускает мою деятельность и скрывает значок приложения из ящика,
<activity
android:label="@string/app_name"
android:name=".DashboardActivity" >
</activity>
но не работает в ICS, если я уберу эти строки, активность не начнется, есть идеи, почему?
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Это код моего слушателя Dialpad
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;
public class DialpadLauncher extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Bundle bundle = intent.getExtras();
if (null == bundle)
return;
// outgoingNumber=intent.getStringExtra(Intent.ACTION_NEW_OUTGOING_CALL);
String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
if (phoneNumber.equals("#00008#")){
//START APPLICATION HERE
//Toast.makeText(context,"DIALED: " + phoneNumber, Toast.LENGTH_LONG).show();
try {
Intent activity = new Intent(context, DashboardActivity.class);
activity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(activity);
setResultData(null);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// catch not found (only works on HTC phones)*/
}
}
}
1 ответ
Решение
На случай, если кто-нибудь столкнется с этим в будущем, я нашел способ скрыть значок приложения из ящика программным способом, если он этого не делает, удалив фильтр намерений:
//Disable Launcher icon from drawer if higher than Android 2.3
try {
ComponentName componentToDisable = new ComponentName("com.your.packagename", "com.your.packagename.ActivityName");
getPackageManager().setComponentEnabledSetting(componentToDisable, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}