android通过包名跳转到系统闹钟

来源:互联网 发布:帝国cms 标签大全 编辑:程序博客网 时间:2024/06/05 01:11

主要是通过包名来跳转系统的闹钟



这个在部分手机不可以跳转,

  //跳转系统闹钟//                Intent alarmas = new Intent(AlarmClock.ACTION_SET_ALARM);//                startActivity(alarmas);

所以要使用通过包名来调用系统闹钟

public class SystemClockDemoActivity extends Activity {Map<String, Object> item;private ArrayList<String> pagList;private Button button;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);button = (Button) findViewById(R.id.button);pagList = new ArrayList<String>();button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {listPackages();Log.d("mxt", "paglist的大小:" + pagList.size());for (int i = 0; i < pagList.size(); i++) {Log.d("mxt", pagList.get(i));}PackageManager pm = getPackageManager();Intent i = pm.getLaunchIntentForPackage(pagList.get(0));// 如果该程序不可启动(像系统自带的包,有很多是没有入口的)会返回NULLif (i != null) {SystemClockDemoActivity.this.startActivity(i);} else {Intent i2 = new Intent(Settings.ACTION_DATE_SETTINGS);SystemClockDemoActivity.this.startActivity(i);}}});}class PInfo {private String appname = "";private String pname = "";private String versionName = "";private int versionCode = 0;private Drawable icon;private void prettyPrint() {Log.i("taskmanger", appname + "\t" + pname + "\t" + versionName+ "\t" + versionCode + "\t");}}private void listPackages() {ArrayList<PInfo> apps = getInstalledApps(false); /* * false = no system * packages */final int max = apps.size();for (int i = 0; i < max; i++) {apps.get(i).prettyPrint();item = new HashMap<String, Object>();int aa = apps.get(i).pname.length();if (aa > 11) {if (apps.get(i).pname.indexOf("clock") != -1) {if (!(apps.get(i).pname.indexOf("widget") != -1)) {try {PackageInfo pInfo = getPackageManager().getPackageInfo(apps.get(i).pname, 0);if (isSystemApp(pInfo) || isSystemUpdateApp(pInfo)) {Log.d("mxt", "是系统自带的");Log.d("mxt","找到了"+ apps.get(i).pname.substring(apps.get(i).pname.length() - 5)+ "  全名:" + apps.get(i).pname+ " " + apps.get(i).appname);item.put("pname", apps.get(i).pname);item.put("appname", apps.get(i).appname);pagList.add(apps.get(i).pname);}} catch (Exception e) {// TODO: handle exception}}}}}}private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) {ArrayList<PInfo> res = new ArrayList<PInfo>();List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);for (int i = 0; i < packs.size(); i++) {PackageInfo p = packs.get(i);if ((!getSysPackages) && (p.versionName == null)) {continue;}PInfo newInfo = new PInfo();newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();newInfo.pname = p.packageName;newInfo.versionName = p.versionName;newInfo.versionCode = p.versionCode;newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());res.add(newInfo);}return res;}public boolean isSystemApp(PackageInfo pInfo) {return ((pInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0);}public boolean isSystemUpdateApp(PackageInfo pInfo) {return ((pInfo.applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0);}}


1 0