ユーザーが通知をクリックしたときに、アプリからギャラリーを起動しようとしています。Galleryアプリのパッケージとクラス名を知っている場合にのみ可能であることがわかりました。私は4つのデバイスメーカーで同じものを見つけることができましたが、これまでのところ、このコードは機能します。MotorolaとLGのAndroidフォンのパッケージとクラス名が必要です。
誰か助けてもらえますか?開発者であり、Motorolaまたは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;
}