blog.darkstar.work - a simple url encoder/decoder

 a simple url encoder/decoder
 http://blog.darkstar.work

Labels

Wirtschaft (149) Pressefreiheit (123) Österreich (120) IT (95) code (60) Staatsschulden (37) EZB (27) Pensionssystem (16)

2021-03-22

Anyone expirience with com.huawei.ridemode for real?


android.manifest looks quiet dangerous

<?xml version="1.0" encoding="utf-8"?>

<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
android:sharedUserId="android.uid.system"
android:versionCode="910014"
android:versionName="9.10.14"
android:compileSdkVersion="28"
android:compileSdkVersionCodename="9"
package="com.huawei.ridemode"
platformBuildVersionCode="28"
platformBuildVersionName="9">

<uses-sdk
android:minSdkVersion="28"
android:targetSdkVersion="28" />

<uses-permission
android:name="com.android.soundrecorder.permission.READ_RECORD" />

<uses-permission
android:name="android.permission.WRITE_SECURE_SETTINGS" />

<uses-permission
android:name="android.permission.WRITE_SETTINGS" />

<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission
android:name="android.permission.READ_PHONE_STATE" />

<uses-permission
android:name="android.permission.READ_CONTACTS" />

<uses-permission
android:name="android.permission.BLUETOOTH" />

<uses-permission
android:name="android.permission.BLUETOOTH_ADMIN" />

<uses-permission
android:name="android.permission.SEND_SMS" />

<uses-permission
android:name="android.permission.WRITE_SMS" />

<uses-permission
android:name="android.permission.GET_TASKS" />

<uses-permission
android:name="com.android.systemui.permission.removeTask" />

<uses-permission
android:name="android.permission.REAL_GET_TASKS" />

<uses-permission
android:name="com.huawei.ridemode.ACCESS" />

<protected-broadcast
android:name="huawei.intent.action.HWRIDEMODE_SEND_SMS" />

<uses-permission
android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />

<uses-permission
android:name="com.huawei.server.telecom.permission.DTMFANALYZER_RESULT_RECEIVER" />

<uses-permission
android:name="com.huawei.ims.permission.GET_DTMF_TONE_INFO_RIDE_MODE" />

<permission
android:name="com.huawei.dtmfanalyzer.ACCESS"
android:protectionLevel="0x12" />

<application
android:label="@ref/0x7f090003"
android:icon="@ref/0x7f020020"
android:name="com.huawei.ridemode.RideModeApplication"
android:allowBackup="false"
android:supportsRtl="true">

<meta-data
android:name="hwc-theme"
android:value="androidhwext:style/Theme.Emui" />

<activity
android:label="@ref/0x7f090003"
android:name="com.huawei.ridemode.RideModeActivity"
android:permission="com.huawei.ridemode.ACCESS"
android:taskAffinity="@string/0x1b"
android:excludeFromRecents="true"
android:configChanges="0x4a0">

<intent-filter>

<action
android:name="huawei.intent.action.RIDEMODE_SETTINGS" />

<category
android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

<activity
android:theme="@ref/0x01030010"
android:name="com.huawei.ridemode.RideModeStartActivity"
android:exported="true"
android:taskAffinity="@string/0x1b"
android:excludeFromRecents="true"
android:configChanges="0x4a4">

<intent-filter>

<action
android:name="android.intent.action.MAIN" />

<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity
android:theme="@ref/0x0103006e"
android:name="com.huawei.ridemode.ContactActivity"
android:exported="false"
android:configChanges="0x4a0">

<meta-data
android:name="hwc-theme"
android:value="androidhwext:style/Theme.Emui" />
</activity>

<activity
android:theme="@ref/0x0103006e"
android:label="@ref/0x7f090005"
android:name="com.huawei.ridemode.settings.AutoAnswerVoiceSelectionActivity"
android:exported="false"
android:screenOrientation="1"
android:windowSoftInputMode="0x20"
android:uiOptions="0x1">

<meta-data
android:name="hwc-theme"
android:value="androidhwext:style/Theme.Emui" />
</activity>

<activity
android:theme="@ref/0x0103006e"
android:label="@ref/0x7f090008"
android:name="com.huawei.ridemode.settings.RideModeTextSettings"
android:exported="false"
android:configChanges="0x4a0">

<meta-data
android:name="hwc-theme"
android:value="androidhwext:style/Theme.Emui" />
</activity>

<activity
android:theme="@ref/0x0103006e"
android:label="@ref/0x7f090024"
android:name="com.huawei.ridemode.settings.RideTrackingSettings"
android:exported="false"
android:configChanges="0x4a0">

<meta-data
android:name="hwc-theme"
android:value="androidhwext:style/Theme.Emui" />
</activity>

<activity
android:theme="@ref/0x0103006e"
android:label="@ref/0x7f090006"
android:name="com.huawei.ridemode.settings.AutoMessageSelectionActivity"
android:exported="false"
android:configChanges="0x4a0"
android:uiOptions="0x1">

<meta-data
android:name="hwc-theme"
android:value="androidhwext:style/Theme.Emui" />
</activity>

<activity
android:theme="@ref/0x0103006e"
android:label="@ref/0x7f090027"
android:name="com.huawei.ridemode.RideAnalyticsActivity"
android:exported="false"
android:screenOrientation="1"
android:uiOptions="0x1">

<meta-data
android:name="hwc-theme"
android:value="androidhwext:style/Theme.Emui" />
</activity>

<receiver
android:name="com.huawei.ridemode.RideModeBroadcastReciever"
android:permission="com.huawei.ridemode.ACCESS">

<intent-filter>

<action
android:name="huawei.intent.action.HWRIDEMODE_STOP" />

<action
android:name="huawei.intent.action.HWRIDEMODE_START" />

<action
android:name="huawei.intent.action.HWRIDEMODE_SEND_SMS" />
</intent-filter>
</receiver>

<service
android:name="com.huawei.ridemode.service.RideModeEnableService"
android:exported="false" />

<service
android:name="com.huawei.ridemode.service.RideModeDisableService"
android:exported="false" />

<service
android:name="com.huawei.ridemode.service.RideModeShowDialogService"
android:exported="false" />

<service
android:name="com.huawei.ridemode.service.RideModeIntentService"
android:exported="false" />

<service
android:name="com.huawei.ridemode.service.GPSLocationHelperService"
android:exported="false" />

<service
android:name="com.huawei.ridemode.dtmfanalyzer.DtmfAnalyzerService"
android:permission="com.huawei.dtmfanalyzer.ACCESS"
android:exported="false"
android:singleUser="true" />

<provider
android:name="com.huawei.ridemode.provider.RideModeProvider"
android:exported="false"
android:authorities="com.huawei.ridemode" />
</application>
</manifest>


class SubTabFragmentPagerAdapter.java very funny

.class public Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;
.super Landroid/support/v13/app/FragmentPagerAdapter;
.source "SubTabFragmentPagerAdapter.java"

# interfaces
.implements Lhuawei/android/widget/SubTabWidget$SubTabListener;
.implements Landroid/support/v4/view/ViewPager$OnPageChangeListener;


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;
    }
.end annotation


# instance fields
.field private final mSubTabWidget:Lhuawei/android/widget/SubTabWidget;

.field private final mSubTabs:Ljava/util/ArrayList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/ArrayList<",
            "Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;",
            ">;"
        }
    .end annotation
.end field

.field private final mViewPager:Landroid/support/v4/view/ViewPager;


# direct methods
.method public constructor (Landroid/app/Activity;Landroid/support/v4/view/ViewPager;Lhuawei/android/widget/SubTabWidget;)V
    .registers 5
    .param p1, "activity"    # Landroid/app/Activity;
    .param p2, "pager"    # Landroid/support/v4/view/ViewPager;
    .param p3, "subTabWidget"    # Lhuawei/android/widget/SubTabWidget;

    .line 51
    invoke-virtual {p1}, Landroid/app/Activity;->getFragmentManager()Landroid/app/FragmentManager;

    move-result-object v0

    invoke-direct {p0, v0}, Landroid/support/v13/app/FragmentPagerAdapter;->(Landroid/app/FragmentManager;)V

    .line 28
    new-instance v0, Ljava/util/ArrayList;

    invoke-direct {v0}, Ljava/util/ArrayList;->()V

    iput-object v0, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabs:Ljava/util/ArrayList;

    .line 56
    iput-object p3, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabWidget:Lhuawei/android/widget/SubTabWidget;

    .line 57
    iput-object p2, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mViewPager:Landroid/support/v4/view/ViewPager;

    .line 58
    iget-object v0, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mViewPager:Landroid/support/v4/view/ViewPager;

    invoke-virtual {v0, p0}, Landroid/support/v4/view/ViewPager;->setAdapter(Landroid/support/v4/view/PagerAdapter;)V

    .line 59
    iget-object v0, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mViewPager:Landroid/support/v4/view/ViewPager;

    invoke-virtual {v0, p0}, Landroid/support/v4/view/ViewPager;->setOnPageChangeListener(Landroid/support/v4/view/ViewPager$OnPageChangeListener;)V

    .line 60
    return-void
.end method

.method public constructor (Landroid/app/FragmentManager;Landroid/content/Context;Landroid/support/v4/view/ViewPager;Lhuawei/android/widget/SubTabWidget;)V
    .registers 6
    .param p1, "fm"    # Landroid/app/FragmentManager;
    .param p2, "context"    # Landroid/content/Context;
    .param p3, "pager"    # Landroid/support/v4/view/ViewPager;
    .param p4, "subTabWidget"    # Lhuawei/android/widget/SubTabWidget;

    .line 65
    invoke-direct {p0, p1}, Landroid/support/v13/app/FragmentPagerAdapter;->(Landroid/app/FragmentManager;)V

    .line 28
    new-instance v0, Ljava/util/ArrayList;

    invoke-direct {v0}, Ljava/util/ArrayList;->()V

    iput-object v0, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabs:Ljava/util/ArrayList;

    .line 70
    iput-object p4, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabWidget:Lhuawei/android/widget/SubTabWidget;

    .line 71
    iput-object p3, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mViewPager:Landroid/support/v4/view/ViewPager;

    .line 72
    iget-object v0, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mViewPager:Landroid/support/v4/view/ViewPager;

    invoke-virtual {v0, p0}, Landroid/support/v4/view/ViewPager;->setAdapter(Landroid/support/v4/view/PagerAdapter;)V

    .line 73
    iget-object v0, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mViewPager:Landroid/support/v4/view/ViewPager;

    invoke-virtual {v0, p0}, Landroid/support/v4/view/ViewPager;->setOnPageChangeListener(Landroid/support/v4/view/ViewPager$OnPageChangeListener;)V

    .line 74
    return-void
.end method

.method private setCurrentItem(Lhuawei/android/widget/SubTabWidget$SubTab;)V
    .registers 5
    .param p1, "subTab"    # Lhuawei/android/widget/SubTabWidget$SubTab;

    .line 195
    invoke-virtual {p1}, Lhuawei/android/widget/SubTabWidget$SubTab;->getTag()Ljava/lang/Object;

    move-result-object v0

    instance-of v0, v0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;

    if-eqz v0, :cond_2a

    .line 196
    invoke-virtual {p1}, Lhuawei/android/widget/SubTabWidget$SubTab;->getTag()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;

    .line 197
    .local v0, "tag":Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;
    const/4 v1, 0x0

    .local v1, "i":I
    :goto_f
    iget-object v2, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabs:Ljava/util/ArrayList;

    invoke-virtual {v2}, Ljava/util/ArrayList;->size()I

    move-result v2

    if-ge v1, v2, :cond_2a

    .line 198
    iget-object v2, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabs:Ljava/util/ArrayList;

    invoke-virtual {v2, v1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;

    move-result-object v2

    if-ne v2, v0, :cond_27

    .line 200
    invoke-virtual {p0}, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->notifyDataSetChanged()V

    .line 202
    iget-object v2, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mViewPager:Landroid/support/v4/view/ViewPager;

    invoke-virtual {v2, v1}, Landroid/support/v4/view/ViewPager;->setCurrentItem(I)V

    .line 197
    :cond_27
    add-int/lit8 v1, v1, 0x1

    goto :goto_f

    .line 206
    .end local v0    # "tag":Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;
    .end local v1    # "i":I
    :cond_2a
    return-void
.end method


# virtual methods
.method public addSubTab(Lhuawei/android/widget/SubTabWidget$SubTab;ILandroid/app/Fragment;Landroid/os/Bundle;Z)V
    .registers 8
    .param p1, "subTab"    # Lhuawei/android/widget/SubTabWidget$SubTab;
    .param p2, "position"    # I
    .param p3, "frag"    # Landroid/app/Fragment;
    .param p4, "args"    # Landroid/os/Bundle;
    .param p5, "selected"    # Z

    .line 100
    invoke-virtual {p3}, Landroid/app/Fragment;->isAdded()Z

    move-result v0

    if-nez v0, :cond_f

    invoke-virtual {p3}, Landroid/app/Fragment;->isDetached()Z

    move-result v0

    if-nez v0, :cond_f

    .line 101
    invoke-virtual {p3, p4}, Landroid/app/Fragment;->setArguments(Landroid/os/Bundle;)V

    .line 103
    :cond_f
    new-instance v0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;

    invoke-direct {v0, p3, p4}, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;->(Landroid/app/Fragment;Landroid/os/Bundle;)V

    .line 104
    .local v0, "info":Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;
    invoke-virtual {p1, v0}, Lhuawei/android/widget/SubTabWidget$SubTab;->setTag(Ljava/lang/Object;)Lhuawei/android/widget/SubTabWidget$SubTab;

    .line 105
    invoke-virtual {p1}, Lhuawei/android/widget/SubTabWidget$SubTab;->getCallback()Lhuawei/android/widget/SubTabWidget$SubTabListener;

    move-result-object v1

    if-nez v1, :cond_20

    .line 106
    invoke-virtual {p1, p0}, Lhuawei/android/widget/SubTabWidget$SubTab;->setSubTabListener(Lhuawei/android/widget/SubTabWidget$SubTabListener;)Lhuawei/android/widget/SubTabWidget$SubTab;

    .line 109
    :cond_20
    iget-object v1, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabs:Ljava/util/ArrayList;

    invoke-virtual {v1, p2, v0}, Ljava/util/ArrayList;->add(ILjava/lang/Object;)V

    .line 111
    iget-object v1, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabWidget:Lhuawei/android/widget/SubTabWidget;

    invoke-virtual {v1, p1, p2, p5}, Lhuawei/android/widget/SubTabWidget;->addSubTab(Lhuawei/android/widget/SubTabWidget$SubTab;IZ)V

    .line 112
    invoke-virtual {p0}, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->notifyDataSetChanged()V

    .line 113
    if-nez p5, :cond_40

    iget-object v1, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabWidget:Lhuawei/android/widget/SubTabWidget;

    invoke-virtual {v1}, Lhuawei/android/widget/SubTabWidget;->getSelectedSubTab()Lhuawei/android/widget/SubTabWidget$SubTab;

    move-result-object v1

    if-eqz v1, :cond_40

    .line 114
    iget-object v1, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabWidget:Lhuawei/android/widget/SubTabWidget;

    invoke-virtual {v1}, Lhuawei/android/widget/SubTabWidget;->getSelectedSubTab()Lhuawei/android/widget/SubTabWidget$SubTab;

    move-result-object v1

    invoke-direct {p0, v1}, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->setCurrentItem(Lhuawei/android/widget/SubTabWidget$SubTab;)V

    .line 116
    :cond_40
    return-void
.end method

.method public addSubTab(Lhuawei/android/widget/SubTabWidget$SubTab;Landroid/app/Fragment;Landroid/os/Bundle;Z)V
    .registers 7
    .param p1, "subTab"    # Lhuawei/android/widget/SubTabWidget$SubTab;
    .param p2, "frag"    # Landroid/app/Fragment;
    .param p3, "args"    # Landroid/os/Bundle;
    .param p4, "selected"    # Z

    .line 80
    invoke-virtual {p2}, Landroid/app/Fragment;->isAdded()Z

    move-result v0

    if-nez v0, :cond_f

    invoke-virtual {p2}, Landroid/app/Fragment;->isDetached()Z

    move-result v0

    if-nez v0, :cond_f

    .line 81
    invoke-virtual {p2, p3}, Landroid/app/Fragment;->setArguments(Landroid/os/Bundle;)V

    .line 84
    :cond_f
    new-instance v0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;

    invoke-direct {v0, p2, p3}, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;->(Landroid/app/Fragment;Landroid/os/Bundle;)V

    .line 85
    .local v0, "info":Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;
    invoke-virtual {p1, v0}, Lhuawei/android/widget/SubTabWidget$SubTab;->setTag(Ljava/lang/Object;)Lhuawei/android/widget/SubTabWidget$SubTab;

    .line 87
    invoke-virtual {p1}, Lhuawei/android/widget/SubTabWidget$SubTab;->getCallback()Lhuawei/android/widget/SubTabWidget$SubTabListener;

    move-result-object v1

    if-nez v1, :cond_20

    .line 88
    invoke-virtual {p1, p0}, Lhuawei/android/widget/SubTabWidget$SubTab;->setSubTabListener(Lhuawei/android/widget/SubTabWidget$SubTabListener;)Lhuawei/android/widget/SubTabWidget$SubTab;

    .line 91
    :cond_20
    iget-object v1, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabs:Ljava/util/ArrayList;

    invoke-virtual {v1, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    .line 92
    iget-object v1, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabWidget:Lhuawei/android/widget/SubTabWidget;

    invoke-virtual {v1, p1, p4}, Lhuawei/android/widget/SubTabWidget;->addSubTab(Lhuawei/android/widget/SubTabWidget$SubTab;Z)V

    .line 93
    invoke-virtual {p0}, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->notifyDataSetChanged()V

    .line 94
    return-void
.end method

.method public getCount()I
    .registers 2

    .line 152
    iget-object v0, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabs:Ljava/util/ArrayList;

    invoke-virtual {v0}, Ljava/util/ArrayList;->size()I

    move-result v0

    return v0
.end method

.method public getItem(I)Landroid/app/Fragment;
    .registers 3
    .param p1, "position"    # I

    .line 139
    iget-object v0, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabs:Ljava/util/ArrayList;

    invoke-virtual {v0, p1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;

    invoke-static {v0}, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;->access$000(Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;)Landroid/app/Fragment;

    move-result-object v0

    return-object v0
.end method

.method public onPageScrollStateChanged(I)V
    .registers 2
    .param p1, "state"    # I

    .line 160
    return-void
.end method

.method public onPageScrolled(IFI)V
    .registers 5
    .param p1, "position"    # I
    .param p2, "positionOffset"    # F
    .param p3, "positionOffsetPixels"    # I

    .line 166
    iget-object v0, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabWidget:Lhuawei/android/widget/SubTabWidget;

    invoke-virtual {v0, p1, p2}, Lhuawei/android/widget/SubTabWidget;->setSubTabScrollingOffsets(IF)V

    .line 167
    return-void
.end method

.method public onPageSelected(I)V
    .registers 3
    .param p1, "position"    # I

    .line 172
    iget-object v0, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabWidget:Lhuawei/android/widget/SubTabWidget;

    invoke-virtual {v0, p1}, Lhuawei/android/widget/SubTabWidget;->setSubTabSelected(I)V

    .line 173
    return-void
.end method

.method public onSubTabReselected(Lhuawei/android/widget/SubTabWidget$SubTab;Landroid/app/FragmentTransaction;)V
    .registers 3
    .param p1, "subTab"    # Lhuawei/android/widget/SubTabWidget$SubTab;
    .param p2, "ft"    # Landroid/app/FragmentTransaction;

    .line 180
    return-void
.end method

.method public onSubTabSelected(Lhuawei/android/widget/SubTabWidget$SubTab;Landroid/app/FragmentTransaction;)V
    .registers 3
    .param p1, "subTab"    # Lhuawei/android/widget/SubTabWidget$SubTab;
    .param p2, "ft"    # Landroid/app/FragmentTransaction;

    .line 185
    invoke-direct {p0, p1}, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->setCurrentItem(Lhuawei/android/widget/SubTabWidget$SubTab;)V

    .line 186
    return-void
.end method

.method public onSubTabUnselected(Lhuawei/android/widget/SubTabWidget$SubTab;Landroid/app/FragmentTransaction;)V
    .registers 3
    .param p1, "subTab"    # Lhuawei/android/widget/SubTabWidget$SubTab;
    .param p2, "ft"    # Landroid/app/FragmentTransaction;

    .line 192
    return-void
.end method

.method public removeAllSubTabs()V
    .registers 2

    .line 130
    iget-object v0, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabs:Ljava/util/ArrayList;

    invoke-virtual {v0}, Ljava/util/ArrayList;->clear()V

    .line 131
    iget-object v0, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabWidget:Lhuawei/android/widget/SubTabWidget;

    invoke-virtual {v0}, Lhuawei/android/widget/SubTabWidget;->removeAllSubTabs()V

    .line 132
    invoke-virtual {p0}, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->notifyDataSetChanged()V

    .line 133
    return-void
.end method

.method public removeSubTab(Lhuawei/android/widget/SubTabWidget$SubTab;)V
    .registers 3
    .param p1, "subTab"    # Lhuawei/android/widget/SubTabWidget$SubTab;

    .line 120
    invoke-virtual {p1}, Lhuawei/android/widget/SubTabWidget$SubTab;->getPosition()I

    move-result v0

    invoke-virtual {p0, v0}, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->removeSubTabAt(I)V

    .line 121
    return-void
.end method

.method public removeSubTabAt(I)V
    .registers 4
    .param p1, "position"    # I

    .line 124
    iget-object v0, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabs:Ljava/util/ArrayList;

    invoke-virtual {v0, p1}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;

    .line 125
    iget-object v0, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabWidget:Lhuawei/android/widget/SubTabWidget;

    iget-object v1, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabWidget:Lhuawei/android/widget/SubTabWidget;

    invoke-virtual {v1, p1}, Lhuawei/android/widget/SubTabWidget;->getSubTabAt(I)Lhuawei/android/widget/SubTabWidget$SubTab;

    move-result-object v1

    invoke-virtual {v0, v1}, Lhuawei/android/widget/SubTabWidget;->removeSubTab(Lhuawei/android/widget/SubTabWidget$SubTab;)V

    .line 126
    invoke-virtual {p0}, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->notifyDataSetChanged()V

    .line 127
    return-void
.end method

.method public setItem(Landroid/app/Fragment;I)V
    .registers 4
    .param p1, "fm"    # Landroid/app/Fragment;
    .param p2, "position"    # I

    .line 144
    iget-object v0, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->mSubTabs:Ljava/util/ArrayList;

    invoke-virtual {v0, p2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;

    .line 145
    .local v0, "info":Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;
    invoke-virtual {v0, p1}, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;->setFragmentItem(Landroid/app/Fragment;)V

    .line 146
    invoke-virtual {p0}, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;->notifyDataSetChanged()V

    .line 147
    return-void
.end method

.class final Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;
.super Ljava/lang/Object;
.source "SubTabFragmentPagerAdapter.java"


# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Lhuawei/support/v13/app/SubTabFragmentPagerAdapter;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x18
    name = "SubTabInfo"
.end annotation


# instance fields
.field private final args:Landroid/os/Bundle;

.field private fragment:Landroid/app/Fragment;


# direct methods
.method constructor (Landroid/app/Fragment;Landroid/os/Bundle;)V
    .registers 3
    .param p1, "_fragment"    # Landroid/app/Fragment;
    .param p2, "_args"    # Landroid/os/Bundle;

    .line 34
    invoke-direct {p0}, Ljava/lang/Object;->()V

    .line 35
    iput-object p1, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;->fragment:Landroid/app/Fragment;

    .line 36
    iput-object p2, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;->args:Landroid/os/Bundle;

    .line 37
    return-void
.end method

.method static synthetic access$000(Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;)Landroid/app/Fragment;
    .registers 2
    .param p0, "x0"    # Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;

    .line 30
    iget-object v0, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;->fragment:Landroid/app/Fragment;

    return-object v0
.end method


# virtual methods
.method public getArgs()Landroid/os/Bundle;
    .registers 2

    .line 45
    iget-object v0, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;->args:Landroid/os/Bundle;

    return-object v0
.end method

.method public setFragmentItem(Landroid/app/Fragment;)V
    .registers 2
    .param p1, "fm"    # Landroid/app/Fragment;

    .line 40
    iput-object p1, p0, Lhuawei/support/v13/app/SubTabFragmentPagerAdapter$SubTabInfo;->fragment:Landroid/app/Fragment;

    .line 41
    return-void
.end method



Emojies in res are even more funny




all calls and usages in classes.dex LOLs em all


2021-02-27

Schlafstörungen, nächtliche Recherche und IBM Security

Aufgrund nächtlicher Schlafstörungen recherierte ich ein wenig, denn für ein komplett neues android system image kompilieren, war ich trotzdem viel zu müde.

Dabei fand ich diese netten IBM Security Produkte und noch ein par andere Dinge:


IBM's still alive


IBM Security Trusteer Mobile SDK

Hier gibts so ein trusted mobile device (andoid, iphone, tablet) SDK (Software Development Kit), das Kompromittierungen (root, hacked, jail-breaked, untergeschobene root-CAs um SSL aufzubrechen und evtl. Staatstrojaner und ähnliches erkennt). Jedenfalls sollten Entwickler damit sicherere verteilte Anwendungen für Cloud u.s.w. hochverfügbar implemetieren können:

https://www.ibm.com/products/trusteer-mobile-sdk

Mobile device management (MDM) solutions

Das hier ist auch so eine mobile security Geschichte, die mobile Geräte Sicherheit der Mitarbeiter garantieren will. Also so kein "Nachhause-Telefonieren" durch irgendwelche untergejubelten Drittanbieter Apps, klassische End-2-EndPoint Secuirty, u.s.w.

https://www.ibm.com/security/mobile/mobile-device-management

IBM Security Products (case study fraud detection)

Dann zeigt IBM weiter noch, dass es auch eine standardisierte Fraud detection (wahrscheinlich generisch erweiterbar) kann! Ich schätze diese Fraud Detection Engine geht wahrscheinlich über Insolvenzregister, KSV, Casinosperre, Standardbonitätabfragen und dubiose exotische Prepaid oder sontige WireCreditCards hinaus und lernt kontinuierlich (à la Virenscanner):

https://www.ibm.com/security/products

nomachine.com

Zu guter letzt fand ich noch einen sicheren Terminal-Server (diesmal nicht IBM, den sich auch mal wer ansehen könnte):

https://www.nomachine.com/product&p=NoMachine%20Enterprise%20Terminal%20Server




Gehe jetzt wieder ins Bett, gute Nacht / guten Morgen.


2021-02-10

Warum ich der Welt grundlegend misstraue?

Die Zeitung "Die Welt" schrieb: "Ein Forschungsteam hat sich den Erfolg der deutschen Kapitalanlage im Ausland gründlich angeschaut. Dabei hat sich gezeigt, dass die Deutschen bei ihrer internationalen Geldanlage ähnlich erfolglos sind wie bei der Anlage ihrer Ersparnisse." "Andere Länder sind mit der Anlage ihres Auslandsvermögens deutlich erfolgreicher. Seit 1975 liegt die jährliche Rendite deutscher Anlagen im Ausland um fünf Prozentpunkte unter den Erträgen, die die USA erwirtschaften, und immer noch drei Prozentpunkte unter der Rendite, die die anderen europäischen Länder im Durchschnitt erwirtschaften." "Deutsche Anlagen im Ausland besser managen Allein im Zeitraum seit der Finanzkrise hätte Deutschland ein zusätzliches Vermögen im Umfang von zwei bis drei Billionen Euro aufbauen können, hätte es sein Geld ähnlich gut angelegt wie Kanada oder Norwegen. Pro Kopf der deutschen Bevölkerung entspricht das 28.000 bis 37.500 Euro! Auf einen Schlag hätten wir ein um 50 Prozent höheres Vermögen." "Was zu der folgenden Frage führt: Woran liegt es? Darüber kann man nur spekulieren. Um uns zu verbessern, sollten wir zwei Dinge tun: weniger im Ausland anlegen und unsere Anlagen im Ausland besser managen."
Web Link: https://www.welt.de/finanzen/plus226059659/Geld-fuer-die-Steuerzahler-25-000-Euro-fuer-alle-unter-65.html Screenshot: https://photos.app.goo.gl/MrvKFzFtgbqoW6vJ8 Äh, wieso muss Deutschland sein Vermögen im Ausland inverstieren? Performance der Börsenleitindezes einiger europäischer Staaten inkl. Schweiz. Wir sehen, der DAX stieg um 254%! Jetzt mal angenommen, die Deutschen hätten ihr Geld in der Schweden oder in der Schweiz angelegt: das wären ja immer noch satte 228% oder 132%. Von Signapur oder den USA rede ich jetzt gar nicht einmal, sondern nur von Europa. Selbst bei Investitionen in den Eurostoxx oder den italienischen Leitindex wäre das noch immer ein kleines Plus von 50%. Und bitte, Italien ist nicht unbedingt das kapitalistischte Land der Welt, oder? Europäisches Land Steigerung von 22.02.2009 bis 10.02.2021: Deutschland 354,19% Schweden 328,13% Schweiz 232,96% Eurostoxx 208,29% Italien 155,45% Griechenland 14,66%


P.S.: Was mich aber wirklich wundert:
Wie in aller Welt konnte Deutschland mit dieser hohen Staatsquote so extrem gut gegenüber der sparsamen liberalen Schweiz performen. Ich vermute, es liegt an den Freihandelsverträgen, die die EU genial aushandelte.

Ich vermute: Da die deutsche Wirtschaft auf Export ausgelegt ist, ist jeder Freihandelsvertrag ein Boost im DAX.
P.P.S.: EINE KLITZEKLEINE FRAGE:

Was hindert eigentlich die Deutschen daran, sich an deutschen Unternehmen zu beteiligen? Ich mein Mtarbeiterbeteiligung ist ein etwas moderneres, aber nicht gerade sehr neues sozialistisches Konzept, das bei so Betrieben, wie der VOEST Alpine, inzwischen sogar [Geschäfsgeheimnis] und [Geschäfsgeheimnis] in Österreich und sogar inzwischen einigen US amerikanischen Unternehmen oder japanischen Unternehmen Gang und Gebe ist. Sind aber alles Industrie- oder IT- Unternehmen. (bis auf Goldman Sachs), aber Nomen est Omen und dort ist immerhin der Sachse vergoldet und nicht Paria.
Welcher Mitarbeiter oder Manager von mittel bis CEO vertraut bitte dem eigenen Unternehmen nicht? Das klingt verdammt nach "Deutscher Bank" oder? Ich kann mir nicht vorstellen, dass ein BMW Mitarbeiter den bayrischen Motorenwerken nicht vertraut oder ein VW Mitarbeiter nicht den Guys in Wolfsburg oder Ingolsstadt. Ich würde sogar T-Systems vertrauen und dort mein Geld investieren!

2021-02-05

No global plan for generic multi-language globalization/localizaion

There is sadley no generic concept for platform and language independent multi language globalization / localization for applications.

Some case studies


Visual Studio WinForms (C#VB)

Globalization / Localization in Windows Forms is implemented via different resource files (.resx).
ResourceManager and Resource accessors are created semi automatically from Visual Studio.

Visual Studio 2019
Resources in .NET


Microsoft and Stockoverflow links about resources and globalization and culture info.

Android Studio (Java, Kotlin)

Globalization / Localization are realised in Android Studio via different language directories beyond the res folder:

Using the Translation Editor inside Resource Manager to build your translation from Android Studio GUI, see: http://blog.androidrich.com/2016/11/translation-editor-in-android-studio.html



Android supports right to left screen orientation too for arab or farsi languages.

Documentation about globalization / localization in android

Razor MVC and Blazor Web

Webpages, that are build with .NET framework and deployed in IIS on windows or Apache on linux (no matter with mod_mono or something else [1]) use language and country prefix directly after FQDN and before path in url to route to different language subpages, e.g.:
https://docs.microsoft.com/en-us/aspnet/core/blazor/globalization-localization
https://docs.microsoft.com/de-at/aspnet/core/blazor/globalization-localization
https://docs.microsoft.com/fr-fr/aspnet/core/blazor/globalization-localization



Multi-language globalization in reality

In reality in the world wide web and on desktop or other applications, there are many different approaches how multi-language and globalization is implemented. Only few use a auto translation API like google.com/translate.

Prospect / outlook for standardized globalization?

I don't know. Lets use the crowd to answer that question!

2021-01-17

n-sphere hypermaps ⇒ cattle breeding

Have you ever noticed the advantage of real n-sphere hypermaps?

No?

That is very sad, because with hypermaps thou would understand, recognize, realize immediately,

  1. that alpine pastures for cattles offer little crop yield for humans;
  2. that mordern technical agricultureof is nearly impossible in hilly and mountainous impassable areas with rocks and small swamps inside and only 2% continuous flat area per hectare.
  3. that cattle breeding in certain climatic alpine mountainous regions has much lower risk as Agricultureof with poor hervests in worse case.
  4. that cattles transforrm & recycle low-calorie vegetarian naural grown food much better than humans or hunter mammals with a short intestine.
  5. that chances of success for cattle and sheep breeding are similarly much higher as profitable modern agriculture at Scottish Highlands in the marsh, around rual areas beside Loch Ness, on Outer Hebrides and on small isles (Inishbofin, Claire Island) near the Irish north-west coast.





2021-01-11

linux: flashing an (iso)image to usb stick

This article contains all main informations to create (rawwrite) a bootable usb stick from an existing iso (loopback) image under linux.

classic way diskdump (dd)

Find correct usb device file 

First we had to find correct linux device file for your plugged/connected usb flash (e.g. lsblk):

  lsblk --list --fs ; lsusb -v ; lshw ; hal-device ; dmesg ; echo "..."

or use that (almost) auto usb devive verifying simple shell script:

get_usb_device() {
    local device_path=$1        # such as /dev/sdc
    for devlink in /dev/disk/by-id/usb*; do
        if [ "$(readlink -f "$devlink")" = "$device_path" ]; then
            # echo "$device_path" is usb device 
            # echo "$(lsblk -no NAME,FSTYPE,SIZE,STATE,OWNER,TYPE,MOUNTPOINT,LABEL,MODEL "$device_path")
            echo Fetching detailed information for usb device "$device_path" by 'hdparm -I "$device_path"'
            echo -en "$(hdparm -I "$device_path") \n\n"
            echo use cache size as base for block size in disk dumnp later 'bs=...'

            return 0
        fi
    done
	
    echo "$device_path" is not an usb device
    return 1
}

  REMOVABLE_DRIVES=""
  for _device in /sys/block/*/device; do
      if echo $(readlink -f "$_device")|egrep -q "usb"; then
          _disk=$(echo "$_device" | cut -f4 -d/)
          REMOVABLE_DRIVES="$REMOVABLE_DRIVES $_disk"
      fi
  done
 
  for _usbdevice in "$REMOVABLE_DRIVES"; do

    if get_usb_device "$_usbdevice"; then
      echo "# use following code to create your bootable usb stick: "
      echo sudo umount -l "$_usbdevice" ; 
      sudo dd if="$HOME"/'path_to_your_image.iso' of="$_usbdevice" bs=4K && sync 
      echo "# correct bs (block size) by cache size of usb device! "
    else
      echo failed verifying usb by executing command: get_usb_device "$_usbdevice" 
    fi
  done

Flash your iso image to usb device file with dd

Finally use linux disk dump (dd) for creating image.

  sudo umount -l  /dev/usb_device_to_flash ; 
  sudo dd if=path_to_your_iso_image of=usb_device_to_flash bs=block_size_based_on_devive_cache && sync ; 
  # default block site always are any factors of 4K

Advanced tools like Usbimager or WoeUSB

Using more advanced graphical tools such as usbimager or WoeUSB to create bootable USB flash stick.


2021-01-01

hard fact reality vs narrative story telling (playing) theater from the point of triggers

Introduction 

The meaning of triggers in this article according to information theory. 

https://pediaa.com/difference-between-semantics-and-pragmatics/

A trigger is an impulse that causes people or programmed machines to take certain actions after a message has been understood in both semantic and pragmatic context. Strong triggers include furthermore the feeling of high priority and generate a strong tendency to act, well as an awareness of the consequences of not acting now.

Some examples for triggers

  1. Weather is stormy and rainy (semantically and pragmatically understood) ⇒  
      (Trgger  (T)   
    ⇒  I have to open my umbrella

  2. Fire breaks out ⇒ 
      (Trgger  (T)   
    ⇒  Trigger fire alarm and call fire department

  3. FED is lowering prime interest rate from 2,25% to 0,5%. ⇒ 
      (Trgger  (T)   
     Let's get a cheap credut (loan) in US$ and 
    make classical leverage invest in Dow Jones & Nasdaq!



Detect hard fact reality vs story telling theater by observing behavior of trigger

When I was in the army long time ago, we learned several emergency commands / orders. One of that was 'AC-Alarm' (Atomic nuclear, biological or chemical are launched, so troops had to immediately Initiate protective suit and emergency measures)



Nobody was ever maling many funny jokes in that training, similiar to fire breaks out ⇒ fire alarm in the examples above. When observing the trigger behavior. everybody recognizes, that this is no playing game and a real dangerous situation. Same story, when people are infected with HIV (AIDS) Virus or (not so deadly) Malaria.

Well, when looking at the Coronavirus, triggers are too soft, negligently, inconsistent.
Remember all DioxinPlutoniumAnthrax incidents in the last 25 years, remember even Creutzfeldt–Jakob disease. triggers were much more hard and serious, even when there was never danger for many people in all that cases.

According the media Coronavirus has already killed hundreds of thousands of alleged dead, but nobody's reacting or triggering heavy casualties for real. People are still playing that game, but nobody takes / triggers that Coronavirus real serious / grievous.