当用户单击通知时,我正在尝试从我的应用程序启动图库。我发现只有知道 Gallery 应用程序的包和类名才有可能。我已经设法为四家设备制造商找到了相同的代码,到目前为止,这段代码有效。我只需要 Motorola 和 LG Android 手机的包和类名。
任何人都可以帮忙吗?如果您是开发人员并拥有摩托罗拉或 LG Android 设备,这对您来说非常容易。您只需在连接到 LogCat 的同时在手机中启动图库,它将显示图库的包和类名。
代码:
Intent newIntent = new Intent();
//open Gallery in Nexus plus All Google based ROMs
if(doesPackageExist("com.google.android.gallery3d"))
newIntent.setClassName("com.google.android.gallery3d", "com.android.gallery3d.app.Gallery");
//open Gallery in Sony Xperia android devices
if(doesPackageExist("com.android.gallery3d"))
newIntent.setClassName("com.android.gallery3d", "com.android.gallery3d.app.Gallery");
//open gallery in HTC Sense android phones
if(doesPackageExist("com.htc.album"))
newIntent.setClassName("com.htc.album", "com.htc.album.AlbumMain.ActivityMainCarousel");
//open gallery in Samsung TouchWiz based ROMs
if(doesPackageExist("com.cooliris.media"))
newIntent.setClassName("com.cooliris.media", "com.cooliris.media.Gallery");
startActivity(newIntent);
并检查包名是否存在:
public boolean doesPackageExist(String targetPackage) {
PackageManager pm = getPackageManager();
try {
PackageInfo info = pm.getPackageInfo(targetPackage, PackageManager.GET_META_DATA);
} catch (NameNotFoundException e) {
return false;
}
return true;
}