2014-07-14 117 views
0

默认的应用程序图标的绘制ID在我的情况,我知道下面我怎样才能在Android的

getApplicationContext().getResources().getIdentifier("nameOfDrawable", "drawable", packageName); 
getApplicationContext().getPackageManager().getApplicationIcon(packageName); 

我想要得到的应用程序图标的绘制ID的一些方法,但我不知道的“nameOfDrawable”应用程序图标。我说我不知道​​,因为默认的应用程序图标的名称可以是“ic_launcher.png”或更改为其他像“icon.png”。我发现上面的第二种方法可以得到应用程序图标的可绘制,但是我不知道该怎么做。有谁知道如何获取应用图标的可绘制ID?请帮忙,谢谢!

实际上,我想显示一个通知,但它需要使用图标的可绘制ID。我发现上面的第一个方法可以获取应用程序图标的可绘制的ID,但它需要应用程序图标文件的名称,它可以在不同的应用程序中有所不同。我正在做的是做一个小型图书馆来做一些事情,所以有些事情不能得到证实。

回答

0

最后,我找到了解决问题的方法。代码如下。

String packageName = context.getApplicationContext().getPackageName(); 
     Intent launchIntent = context.getApplicationContext().getPackageManager().getLaunchIntentForPackage(packageName); 
     String className = launchIntent.getComponent().getClassName(); 

Class<?> c = null; 
     if(className != null) { 
      try { 
       c = Class.forName(className); 
      } catch (ClassNotFoundException e) { 
       Log.i(TAG, "Throw exception when try to get the main class."); 
       e.printStackTrace(); 
      } 
     } 

ApplicationInfo info = null; 
     try { 
      info = context.getApplicationContext().getPackageManager().getApplicationInfo(packageName, 0); 
     } catch (NameNotFoundException e1) { 
      // TODO Auto-generated catch block 
      e1.printStackTrace(); 
     } 
     int icon = info.icon; 

long when = System.currentTimeMillis(); 
     Notification notification = new Notification(icon, null, when); 
     notification.flags = Notification.FLAG_AUTO_CANCEL; 
     notification.defaults = notification.DEFAULT_SOUND|notification.DEFAULT_VIBRATE; 
     Intent openintent= new Intent(context, c); 
     PendingIntent contentIntent = PendingIntent.getActivity(context.getApplicationContext(), 0, openintent, 0); 
     notification.setLatestEventInfo(context.getApplicationContext(), "Notification", message, contentIntent); 

     NotificationManager mNotificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); 
     mNotificationManager.notify(NOTIFICATION_COUNT, notification); 
+0

嗨!info.icon'给了什么? –

+0

info.icon提供可绘制图标的标识 – fisher

1

这是你如何获取并使用可绘制对象:

Drawable icon = getPackageManager().getApplicationIcon("com.example.samplepackagename"); 
imageView.setImageDrawable(icon); 

任何资源的ID是局部的,特定的应用。

+0

谢谢,我已经知道该方法,但如何获取可绘制的id?我找不到它:( – fisher

+1

由于该ID仅适用于该特定应用程序,因此即使您能够获取它,我也不认为您可以使用它。 –

+0

哦,我也是想想是的,但是如何得到它?实际上,如果我知道应用程序图标图像文件的名称,那么我可以使用上面提到的第一种方法来获取id。我添加了一些描述来描述我的整个问题,你想过吗? – fisher