如何判斷設備是否使用HTC的SenseUI?確定設備是否使用HTC SenseUI
我想過使用android.os.Build的信息,但他們似乎不一致..有沒有更確定的方式?
我需要能夠通過使用com.android.calendar或com.htc.calendar來判斷我是否可以啓動日曆。
我歡迎任何建議!
如何判斷設備是否使用HTC的SenseUI?確定設備是否使用HTC SenseUI
我想過使用android.os.Build的信息,但他們似乎不一致..有沒有更確定的方式?
我需要能夠通過使用com.android.calendar或com.htc.calendar來判斷我是否可以啓動日曆。
我歡迎任何建議!
歡迎使用PackageManager
來查看設備上是否存在com.htc.calendar
。您可以使用PackageManager
來派生出一個可用於打開該包的Intent
。是否會推出(HTC)日曆「取決於HTC和Android,而不是你。
另外,正如瑪麗亞所說,您所做的並不是一個好主意,因爲沒有規定HTC在每個Sense設備上現在和將來都會使用com.htc.calendar
。
然後啓動日曆意向的更好方法是什麼? – 2010-08-26 01:31:49
@atolar:Calendar應用程序不是Android SDK的一部分。對於HTC或「普通」Android而言,沒有記錄和支持的方式來「發佈日曆意圖」。 – CommonsWare 2010-08-26 04:14:04
根據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);
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);
我知道這不是你的問題,但是寫這取決於無證的API這樣的應用程序之前,我會三思而後行。新手機出來後,你的應用必然會崩潰。請參閱Commonsware有關此文章的文章:http://www.androidguys.com/2009/12/14/code-pollution-reaching-past-the-sdk/ – 2010-08-25 22:20:19