簡體   English   中英

在Android手機中啟動Gallery

[英]Launching Gallery in android phones

當用戶單擊通知時,我試圖從我的應用程序啟動圖庫。 我發現只有在您知道Gallery應用程序的包和類名的情況下,才有可能。 我設法為四個設備制造商找到了相同的代碼,到目前為止,該代碼仍然有效。 我只需要Motorola和LG Android手機的包裝和類名。

有人可以幫忙嗎? 如果您是開發人員並且擁有Motorola或LG Android設備,這對您來說非常容易。 您只需在連接LogCat的同時在手機中啟動Gallery,它就會顯示Gallery的程序包和類名稱。

碼:

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;    
}

您應該能夠通過基本的Intent來啟動Gallery應用,如下所示:

Intent intent =  new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivity(intent);

如果多個應用程序可以顯示圖像(例如Gallery和ESFileExplorer),則可能會觸發應用程序選擇器。

沒有在每台Android設備上都描述“ Gallery”應用程序的通用表,因此,為了避免向用戶顯示活動解析器,最好的辦法是以編程方式列出所有可能的活動處理程序,並明智地猜測要啟動哪個活動處理程序。 。

PackageManager.queryIntentActivities會將Intent轉換為此類軟件包列表,只要您將Intent植入要打開的文件類型即可:

Intent newIntent = new Intent(Intent.ACTION_VIEW);
newIntent.setType("image/*");
List<ResolveInfo> allHandlers = pm.queryIntentActivities(newIntent, PackageManager.MATCH_DEFAULT_ONLY);

然后,您可以拖曳此列表以查找已知軟件包(來自上面的列表),否則,請啟動列表中的第一個軟件包。

但是,您應該考慮自己進行一個瑣碎的活動來顯示圖像。 這是獲得所需控制水平的唯一方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM