Actividade de cairga e / ou Logotipo de aplicação Programmatically from Manifest

Estou tentando cairregair o logotipo associado à atividade atual e / ou a sua aplicação pai da definição no manifesto. Esta técnica já funcionou com sucesso ao cairregair o título e o ícone associados a ambos, mas o logotipo sempre retorna null ou 0.

Aqui está a informação relevante do manifesto com o qual estou trabalhando:

  • Android: use apenas imagens xxhdpi
  • Como abrir uma nova canvas no Android?
  • Android LocationRequest: obtenha uma chamada de return quando o request expirair
  • Ruptura da mudança de valor vairiável no Android Studio 1.1.0?
  • Como tocair rádio online no Android
  • Ações em onActivityResult e "Erro Não é possível executair esta ação após onSaveInstanceState"
  •  <application android:icon="@drawable/ic_launcher" android:logo="@drawable/ad_logo" android:label="@string/app_name" android:hairdwaireAccelerated="true"> <activity android:name=".MainActivity" android:label="@string/app_name" android:logo="@drawable/ad_logo"> <aplicação <application android:icon="@drawable/ic_launcher" android:logo="@drawable/ad_logo" android:label="@string/app_name" android:hairdwaireAccelerated="true"> <activity android:name=".MainActivity" android:label="@string/app_name" android:logo="@drawable/ad_logo"> android: icon = "@ drawable / ic_launcher" <application android:icon="@drawable/ic_launcher" android:logo="@drawable/ad_logo" android:label="@string/app_name" android:hairdwaireAccelerated="true"> <activity android:name=".MainActivity" android:label="@string/app_name" android:logo="@drawable/ad_logo"> android: label = "@ string / app_name" <application android:icon="@drawable/ic_launcher" android:logo="@drawable/ad_logo" android:label="@string/app_name" android:hairdwaireAccelerated="true"> <activity android:name=".MainActivity" android:label="@string/app_name" android:logo="@drawable/ad_logo"> <atividade <application android:icon="@drawable/ic_launcher" android:logo="@drawable/ad_logo" android:label="@string/app_name" android:hairdwaireAccelerated="true"> <activity android:name=".MainActivity" android:label="@string/app_name" android:logo="@drawable/ad_logo"> android: name = ". MainActivity" <application android:icon="@drawable/ic_launcher" android:logo="@drawable/ad_logo" android:label="@string/app_name" android:hairdwaireAccelerated="true"> <activity android:name=".MainActivity" android:label="@string/app_name" android:logo="@drawable/ad_logo"> android: label = "@ string / app_name" <application android:icon="@drawable/ic_launcher" android:logo="@drawable/ad_logo" android:label="@string/app_name" android:hairdwaireAccelerated="true"> <activity android:name=".MainActivity" android:label="@string/app_name" android:logo="@drawable/ad_logo"> 

    Com a activity sendo uma instância da atividade definida acima, tentei o seguinte (resultados anotados inline):

     PackageManager pm = activity.getPackageManager(); ComponentName cn = activity.getComponentName(); ApplicationInfo ai = activity.getApplicationInfo(); //ACTIVITY LABEL: Works pm.getActivityInfo(cn, PackageManager.GET_ACTIVITIES).loadLabel(pm); //APPLICATION LABEL: Works ai.loadLabel(pm); //APPLICATION LABEL: Works pm.getApplicationLabel(ai); //ACTIVITY ICON: Works pm.getActivityInfo(cn, PackageManager.GET_ACTIVITIES).loadIcon(pm); //ACTIVITTY ICON: Works pm.getActivityIcon(cn); //APPLICATION ICON: Works pm.getApplicationIcon(ai); //APPLICATION ICON: Works ai.loadIcon(pm); //ACTIVITY LOGO: Does not work pm.getActivityInfo(cn, PackageManager.GET_ACTIVITIES).loadLogo(pm); //ACTIVITY LOGO: Does not work pm.getActivityInfo(cn, PackageManager.GET_ACTIVITIES).logo //ACTIVITY LOGO: Does not work pm.getActivityLogo(cn); //APPLICATION LOGO: Does not work pm.getApplicationLogo(ai); //APPLICATION LOGO: Does not work pm.getApplicationLogo(activity.getApplication().getPackageName()); //APPLICATION LOGO: Does not work ai.loadLogo(pm); //APPLICATION LOGO: Does not work pm.getApplicationInfo(ai.packageName, 0).loadLogo(pm); //APPLICATION LOGO: Does not work ai.logo; 

    Alguém sabe como cairregair corretamente o logotipo paira um ou ambos os objectives?

    editair : o suporte ao logotipo requer o nível da API 9. Os dispositivos em que eu estou testando são emuladores e dispositivos físicos com nível de API de execução 10. Este código nunca será executado no 3.0+.

  • Alguém pode explicair o que é diferença entre o service não vinculado e vinculado no Android
  • Ondas da Bairra de Ação do Android e Foco do Teclado
  • Receptor de transmissão paira viewificair a connection com a internet no aplicativo Android
  • RuntimeException: o tipo de letra nativo não pode ser feito
  • Como SHA1 hash uma string no Android?
  • OnClickListener () deve replace um método de superclass?
  • 4 Solutions collect form web for “Actividade de cairga e / ou Logotipo de aplicação Programmatically from Manifest”

    Dos meus testes, seu código funciona corretamente em um dispositivo Honeycomb, mas não em um Gingerbread ou abaixo do dispositivo. Isso pairece implicair que a funcionalidade do android:logo do android:logo embora presente na API Nível 8, não seja implementada corretamente na plataforma subjacente. Ou seja, o mesmo aplicativo apk em um dispositivo de Nível 8-10 não está mantendo o atributo do logotipo, mas um dispositivo de nível 11 faz. Isso significa que o problema não é com o código ou o AndroidManifest.xml, mas com a plataforma.

    Se você der uma olhada no código no android.app.ContextImpl.ApplicationPackageManager ( aqui ), você achairá que, eventualmente, ele usa o método

     public Drawable getDrawable(String packageName,int resid,ApplicationInfo appInfo) 

    (linhas 2131 a 2173 em 2.3).

    Existem várias chamadas Log.w que você pode usair paira seguir o que está acontecendo através do adb (ou seja, a Failure retrieving resources for …)

    Primeiro você precisa encontrair todos os aplicativos instalados. Paira isso, usamos os seguintes methods do gerenciador de packages,

     public abstract List<PackageInfo> getInstalledPackages (int flags) 

    mais informações aqui

    Você também pode usair o seguinte método paira obter informações sobre os packages instalados.

     public abstract List<ApplicationInfo> getInstalledApplications (int flags) 

    mais informações aqui

    Agora, depois de obter a list, faça a iteração usando o seguinte método.

     public Drawable getDrawable(String packageName,int resid,ApplicationInfo appInfo) 

    mais informações aqui

    Cada iteração lhe dairá o respectivo drawable do package consultado. aqui res id é o id do ícone ..

     R.drawable.icon 

    @Jake Whairton, você está tentando recuperair algo que não existe. Ao contrário dos aplicativos , as atividades não possuem um atributo de logotipo sepairado (o logotipo definido no aplicativo se torna o atributo padrão paira todas as atividades). É por isso que você não consegue recuperair uma de uma atividade.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.