華為Scan Kit二維碼掃描 更改顯示(懶人取巧)

華為Scan Kit二維碼掃描 默認(rèn)的 視圖圖標(biāo)文字不能更改观蜗,改動成custom 需要改動太多咧栗,目前僅是想改動頂部提示問題和打開去除打開圖庫按鈕逆甜。


image.png

思路
1.構(gòu)建新的操作的Activity繼承ScanKitActivity
2.獲取顯示視圖的View
3.遍歷顯示視圖的View 的子view 找到顯示控件的地方
4.更改顯示內(nèi)容虱肄。

1.ScanKitActivity源碼分析
public class ScanKitActivity extends Activity {
private RemoteView remoteView;
private ImageView backBtn;
private static final String TAG = "ScanKitActivity";



protected void onCreate(Bundle var1) {
    super.onCreate(var1);
    this.requestWindowFeature(1);
    this.setContentView(layout.scankit_layout);
    int var2 = 0;

    try {
        if (this.getIntent() != null) {
            var2 = this.getIntent().getIntExtra("ScanFormatValue", 0);
        }
    } catch (NullPointerException var6) {
        a.b("ScanKitActivity", "getIntExtra can not get");
    }

    this.remoteView = new RemoteView(this, false, var2, (Rect)null);

    this.remoteView.onCreate(var1);
    ViewGroup var3 = (ViewGroup)this.findViewById(id.ll_top);
    var3.addView(this.remoteView);
 ........
 }

RemoteView 動態(tài)添加到Activity視圖中,所需要改動的在RemoteView 中交煞。

2.實(shí)踐
public class ScanByHWActivity extends ScanKitActivity {
RemoteView remoteViewCurrent;
static String TAG = "ScanByHWActivity";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    initview();
}

private void initview() {
    ViewGroup var3 = (ViewGroup) this.findViewById(R.id.ll_top);
    for (int i = 0; i < var3.getChildCount(); i++) {
        View v = var3.getChildAt(i);
        if (v instanceof RemoteView) {
            remoteViewCurrent = (RemoteView) v;
            break;
        }
    }

    if (remoteViewCurrent != null) {
       printView(remoteViewCurrent);
    }

}


private void printView(ViewGroup viewGroup) {

    for (int i = 0; i < viewGroup.getChildCount(); i++) {
        View v = viewGroup.getChildAt(i);
        if (v instanceof ViewGroup) {
            Log.e(TAG, "printView:--viewgroup " + v.getClass().getSimpleName());
            printView((ViewGroup) v);

        } else {
            Log.e(TAG, "printView:- " + v.getClass().getSimpleName());

        }
    }

 }
}

先打印所有的子元素
實(shí)際輸出:

 E/ScanByHWActivity: printView:--viewgroup ProviderRemoteView
 E/ScanByHWActivity: printView:--viewgroup FrameLayout
 E/ScanByHWActivity: printView:- SurfaceView
 E/ScanByHWActivity: printView:- ViewfinderView
 E/ScanByHWActivity: printView:--viewgroup RelativeLayout
 E/ScanByHWActivity: printView:- TextView
 E/ScanByHWActivity: printView:- ImageView
 E/ScanByHWActivity: printView:- ImageView
 E/ScanByHWActivity: printView:--viewgroup LinearLayout
 E/ScanByHWActivity: printView:- ImageView
 E/ScanByHWActivity: printView:- TextView

一看就知道 可以操作
debug 操作之后咏窿,成功拿到上面如圖的id

 android.widget.TextView{3a0914f V.ED..... ......ID 0,0-0,0 #7f090696 app:id/title_scan}
 android.widget.ImageView{8834d7d V.ED..... ......I. 0,0-0,0 #7f090047 app:id/back_img_in}
 android.widget.ImageView{740ae22 V.ED..C.. ......I. 0,0-0,0 #7f090230 app:id/img_btn}
 android.widget.ImageView{a54e3d2 V.ED..C.. ......ID 0,0-0,0 #7f090258 app:id/ivFlash}
 android.widget.TextView{1608493 V.ED..... ......ID 0,0-0,0 #7f0901e7 app:id/flash_light_text}

是不是有點(diǎn)不對?明明有三處文字怎么三個圖標(biāo)怎么只有2個textview
繼續(xù)研究發(fā)現(xiàn) 中間展示的文字是在 ViewfinderView里素征。

image.png

并且沒有暴露方法集嵌,對外修改,混淆后的代碼御毅,反射有難度纸淮,

檢查了下源碼


image.png

scankit_scan_tip 字段,那就強(qiáng)制本地編譯用的修改掉亚享,缺點(diǎn) 重新?lián)Q電腦拉取編譯就又回去了咽块。


image.png

上圖就是修改后的。

至此 隱藏圖庫入口就簡單了:不顯示掃碼title 和圖庫入口

if (remoteViewCurrent != null) {
        TextView textView = remoteViewCurrent.findViewById(R.id.title_scan);
        ImageView img = remoteViewCurrent.findViewById(R.id.img_btn);
        textView.setText("");
        img.setVisibility(View.GONE);
         
    }
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末欺税,一起剝皮案震驚了整個濱河市侈沪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌晚凿,老刑警劉巖亭罪,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異歼秽,居然都是意外死亡应役,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門燥筷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來箩祥,“玉大人,你說我怎么就攤上這事肆氓∨圩妫” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵谢揪,是天一觀的道長蕉陋。 經(jīng)常有香客問我,道長拨扶,這世上最難降的妖魔是什么凳鬓? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮患民,結(jié)果婚禮上缩举,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好蚁孔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布奶赔。 她就那樣靜靜地躺著,像睡著了一般杠氢。 火紅的嫁衣襯著肌膚如雪站刑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天鼻百,我揣著相機(jī)與錄音绞旅,去河邊找鬼。 笑死温艇,一個胖子當(dāng)著我的面吹牛因悲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播勺爱,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼晃琳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了琐鲁?” 一聲冷哼從身側(cè)響起卫旱,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎围段,沒想到半個月后顾翼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奈泪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年适贸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涝桅。...
    茶點(diǎn)故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡拜姿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出苹支,到底是詐尸還是另有隱情砾隅,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布债蜜,位于F島的核電站,受9級特大地震影響究反,放射性物質(zhì)發(fā)生泄漏寻定。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一精耐、第九天 我趴在偏房一處隱蔽的房頂上張望狼速。 院中可真熱鬧,春花似錦卦停、人聲如沸向胡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽僵芹。三九已至处硬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拇派,已是汗流浹背荷辕。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留件豌,地道東北人疮方。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像茧彤,于是被迫代替她去往敵國和親骡显。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容