2010-08-25 40 views
1

如何判斷設備是否使用HTC的SenseUI?確定設備是否使用HTC SenseUI

我想過使用android.os.Build的信息,但他們似乎不一致..有沒有更確定的方式?

我需要能夠通過使用com.android.calendar或com.htc.calendar來判斷我是否可以啓動日曆。

我歡迎任何建議!

+0

我知道這不是你的問題,但是寫這取決於無證的API這樣的應用程序之前,我會三思而後行。新手機出來後,你的應用必然會崩潰。請參閱Commonsware有關此文章的文章:http://www.androidguys.com/2009/12/14/code-pollution-reaching-past-the-sdk/ – 2010-08-25 22:20:19

回答

0

歡迎使用PackageManager來查看設備上是否存在com.htc.calendar。您可以使用PackageManager來派生出一個可用於打開該包的Intent。是否會推出(HTC)日曆「取決於HTC和Android,而不是你。

另外,正如瑪麗亞所說,您所做的並不是一個好主意,因爲沒有規定HTC在每個Sense設備上現在和將來都會使用com.htc.calendar

+0

然後啓動日曆意向的更好方法是什麼? – 2010-08-26 01:31:49

+0

@atolar:Calendar應用程序不是Android SDK的一部分。對於HTC或「普通」Android而言,沒有記錄和支持的方式來「發佈日曆意圖」。 – CommonsWare 2010-08-26 04:14:04

0

根據CommonsWare的建議,以下是我最終使用的。我希望這對他人有幫助。

PendingIntent pendingIntent = null; 
    Intent defineIntent = null; 

    String thePackage = "com.android.calendar"; 
    String theClassName = "com.android.calendar.LaunchActivity"; 

    try { 
     PackageManager thePackageManager = context.getPackageManager(); 
     thePackageManager.getPackageInfo(thePackage,PackageManager.GET_ACTIVITIES); 
    } catch (PackageManager.NameNotFoundException e){ 
     // regular android calendar doesn't exist 

     // so try the htc sense one 
     thePackage = "com.htc.calendar"; 
     theClassName = "com.htc.calendar.LaunchActivity";    
    } 

    defineIntent = new Intent(Intent.ACTION_MAIN) 
     .addCategory(Intent.CATEGORY_LAUNCHER) 
     .setComponent(new ComponentName(thePackage, theClassName)); 

    pendingIntent = PendingIntent.getActivity(context, 
     0 /* no requestCode */, defineIntent, 0 /* no flags */); 
    views.setOnClickPendingIntent(R.id.widget, pendingIntent); 
0
String thePackage = "com.android.calendar"; 
String theClassName = "com.android.calendar.LaunchActivity"; 
Intent defineIntent = null; 

try { 
    PackageManager PACKAGE_NAME = getApplicationContext().getPackageManager(); 
    PACKAGE_NAME.getPackageInfo(thePackage,PackageManager.GET_ACTIVITIES); 
} catch (PackageManager.NameNotFoundException e){ 
    // regular android calendar doesn't exist 
    // so try the htc sense one 
    thePackage = "com.sonyericsson.calendar"; 
    theClassName = "com.sonyericsson.calendar.MonthActivity";    
} 

defineIntent = new Intent(Intent.ACTION_MAIN); 
defineIntent.setComponent(new ComponentName(thePackage, theClassName)); 
startActivity(defineIntent);