一 : 问题描述
Intent如何打开外部程序?setClassName和 setComponent有什么区别?
二 : 解决方案
方案一setClassName,以onClick点击事件为例。
public void onClick(View v){
//最常用常用的写法
new Intent();
intent.setClassName("com.android.systemui","com.android.systemui.SystemUIService");
startActivity(intent);
}
方案二代码来自frameworks/base/services/java/com/android/server/SystemServer.java
static final void startSystemUi(Context context) {
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.android.systemui",
"com.android.systemui.SystemUIService"));
intent.addFlags(Intent.FLAG_DEBUG_TRIAGED_MISSING);
//Slog.d(TAG, "Starting service: " + intent);
context.startServiceAsUser(intent, UserHandle.SYSTEM);
}
两种方法都可以通过Intent打开外部程序,实际上setClassName内部也是调用的setComponent。