public class KeyguardSelectorView extends LinearLayout implements KeyguardSecurityView {
...
...
public void onTrigger(View v, int target) {
final int resId = mGlowPadView.getResourceIdForTarget(target);
switch (resId) {
case R.drawable.ic_action_assist_generic:
Intent assistIntent =
((SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE))
.getAssistIntent(mContext, true, UserHandle.USER_CURRENT);
if (assistIntent != null) {
mActivityLauncher.launchActivity(assistIntent, false, true, null, null);
} else {
Log.w(TAG, "Failed to get intent for assist activity");
}
mCallback.userActivity(0);
break;
case R.drawable.ic_lockscreen_camera:
mActivityLauncher.launchCamera(null, null);
mCallback.userActivity(0);
break;
//參考camera,再復製一個出來即可
case R.drawable.ic_lockscreen_abc:
mActivityLauncher.launchNNTest();
mCallback.userActivity(0);
break;
case R.drawable.ic_lockscreen_unlock_phantom:
case R.drawable.ic_lockscreen_unlock:
mCallback.userActivity(0);
mCallback.dismiss(false);
break;
}
}
}
frameworks/base/packages/Keyguard/src/com/android/keyguard/KeyguardActivityLauncher.java
public abstract class KeyguardActivityLauncher {
...
...
private static final Intent MYINTENT = new Intent ();
public void launchCamera(Handler worker, Runnable onSecureCameraStarted) {
LockPatternUtils lockPatternUtils = getLockPatternUtils();
// Workaround to avoid camera release/acquisition race when resuming face unlock
// after showing lockscreen camera (bug 11063890).
KeyguardUpdateMonitor.getInstance(getContext()).setAlternateUnlockEnabled(false);
if (lockPatternUtils.isSecure()) {
// Launch the secure version of the camera
if (wouldLaunchResolverActivity(SECURE_CAMERA_INTENT)) {
// TODO: Show disambiguation dialog instead.
// For now, we'll treat this like launching any other app from secure keyguard.
// When they do, user sees the system's ResolverActivity which lets them choose
// which secure camera to use.
launchActivity(SECURE_CAMERA_INTENT, false, false, null, null);
} else {
launchActivity(SECURE_CAMERA_INTENT, true, false, worker, onSecureCameraStarted);
}
} else {
// Launch the normal camera
launchActivity(INSECURE_CAMERA_INTENT, false, false, null, null);
}
}
public void launchNNTest() {
MYINTENT.setClassName("com.main","com.main.MainActivity");
launchActivity(MYINTENT, false, false, null, null);
}
}
setClassName(Context packageContext, String className)對apk右鍵兩下,可以看到AndroidManifest.xml
利用反組譯來取得package和classname
命令:java -jar AXMLPrinter2.jar AndroidManifest.xml > test.txt
下載:AXMLPrinter2.jar
圖片的位置:
frameworks/base/packages/Keyguard/res/drawable/ic_lockscreen_camera.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="true" android:state_active="false" android:state_focused="false" android:drawable="@drawable/ic_lockscreen_camera_normal" /> <item android:state_enabled="true" android:state_active="true" android:state_focused="false" android:drawable="@drawable/ic_lockscreen_camera_activated" /> <item android:state_enabled="true" android:state_active="false" android:state_focused="true" android:drawable="@drawable/ic_lockscreen_camera_activated" /> </selector>res/layout/keyguard_glow_pad_view.xml
<com.android.internal.widget.multiwaveview.GlowPadView xmlns:prvandroid="http://schemas.android.com/apk/prv/res/android" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/glow_pad_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="horizontal" android:gravity="@integer/kg_selector_gravity" android:contentDescription="@string/keyguard_accessibility_slide_area" prvandroid:targetDrawables="@array/lockscreen_targets_unlock_only //讀取資料,如下" prvandroid:targetDescriptions="@array/lockscreen_target_descriptions_unlock_only" prvandroid:directionDescriptions="@array/lockscreen_direction_descriptions" prvandroid:handleDrawable="@drawable/ic_lockscreen_handle" .... .... />裡面還有其它設定
res/values/arrays.xml (裡面還有其它的,可以自行擇一)
<array name="lockscreen_targets_unlock_only"> <item>@drawable/ic_lockscreen_unlock</item> //上 <item>@drawable/ic_lockscreen_aaa</item> //右 <item>@drawable/ic_lockscreen_abb</item> //下 <item>@null</item> //左 </array>超過4個時,排的型狀,就要在找一下了
這邊有些關於鎖屏的參考文章:
王宪明的android学习之旅 - android锁屏解析二
王宪明的android学习之旅 - android锁屏解析三
Balancor
APK反組譯取得packagename classname
沒有留言:
張貼留言