2012-04-04 8 views
1

http://www.kidzoneapp.com/uses.htmlは、このアプリでルート

せずにホームボタンをブロックする、彼らは何とか(無ホームダイアログはありませんプレス後の)ユーザーのホームボタンを保護する能力を持っています。私はそれが不可能であることを知っていますが、どうやってそれをしましたか?

マニフェスト、ランチャーについての言葉はありません。

<?xml version="1.0" encoding="utf-8"?> 
<manifest android:versionCode="3" android:versionName="1.2" package="com.deemo.kidzone.main" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <uses-sdk android:minSdkVersion="3" /> 
    <uses-permission android:name="com.android.vending.CHECK_LICENSE" /> 
    <uses-permission android:name="android.permission.CALL_PHONE" /> 
    <uses-permission android:name="android.permission.READ_CONTACTS" /> 
    <uses-permission android:name="android.permission.SET_WALLPAPER" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.RECEIVE_SMS" /> 
    <uses-permission android:name="android.permission.WRITE_SMS" /> 
    <uses-permission android:name="android.permission.READ_SMS" /> 
    <uses-permission android:name="android.permission.READ_LOGS" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> 
    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> 
    <uses-permission android:name="android.permission.RESTART_PACKAGES" /> 
    <uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS" /> 
    <application android:label="@string/home_title" android:icon="@drawable/ic_launcher_home_48x48" android:persistent="true"> 
     <activity android:theme="@android:style/Theme.NoTitleBar" android:name="com.deemo.kidzone.main.Home" android:enabled="false" android:stateNotNeeded="true" android:excludeFromRecents="true" android:launchMode="singleTask" android:configChanges="keyboardHidden|orientation"> 
      <meta-data android:name="android.dock_home" android:value="true" /> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.HOME" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
     <activity android:theme="@android:style/Theme.NoTitleBar" android:name="com.deemo.kidzone.main.Preferences" android:excludeFromRecents="true" /> 
     <activity android:theme="@android:style/Theme.NoTitleBar" android:label="IncomingCallProtectionActivity" android:name=".IncomingCallProtectionActivity" android:excludeFromRecents="true" android:launchMode="singleTask" /> 
     <activity android:theme="@android:style/Theme.NoTitleBar" android:label="PreferencesProtectionActivity" android:name=".PreferencesProtectionActivity" android:excludeFromRecents="true" /> 
     <activity android:theme="@android:style/Theme.NoTitleBar" android:label="ExitProtectionActivity" android:name=".ExitProtectionActivity" android:excludeFromRecents="true" /> 
     <activity android:theme="@android:style/Theme.NoTitleBar" android:label="Fake" android:name=".Fake" /> 
     <activity android:theme="@android:style/Widget.Holo.ScrollView" android:label="CheckingApplicationDialog" android:name=".CheckingApplicationDialog" android:excludeFromRecents="true" /> 
     <activity android:theme="@android:style/Theme.NoTitleBar" android:name=".wizard.WelcomeWizardActivity" android:excludeFromRecents="true" android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:theme="@android:style/Theme.NoTitleBar" android:label="StepPasswordActivity" android:name=".wizard.StepPasswordActivity" android:excludeFromRecents="true" android:screenOrientation="portrait" /> 
     <activity android:theme="@android:style/Theme.NoTitleBar" android:label="StepAllowedApplicationsActivity" android:name=".wizard.StepAllowedApplicationsActivity" android:excludeFromRecents="true" android:screenOrientation="portrait" /> 
     <activity android:theme="@android:style/Theme.NoTitleBar" android:label="StepPhoneAvailabilityActivity" android:name=".wizard.StepPhoneAvailabilityActivity" android:excludeFromRecents="true" android:screenOrientation="portrait" /> 
     <activity android:theme="@android:style/Theme.NoTitleBar" android:label="StepLauncherActivity" android:name=".wizard.StepLauncherActivity" android:excludeFromRecents="true" android:screenOrientation="portrait" /> 
     <activity android:label="StepActivity" android:name=".wizard.StepActivity" android:excludeFromRecents="true" /> 
     <activity android:theme="@android:style/Theme.NoTitleBar" android:label="ChangePasswordActivity" android:name=".ChangePasswordActivity" android:excludeFromRecents="true" /> 
     <activity android:theme="@android:style/Theme.NoTitleBar" android:label="ClearDefaultLauncherActivity" android:name=".wizard.ClearDefaultLauncherActivity" android:excludeFromRecents="true" android:screenOrientation="portrait" /> 
     <activity android:theme="@android:style/Theme.NoTitleBar" android:label="Exit" android:name=".Exit" android:excludeFromRecents="true" /> 
     <activity android:theme="@android:style/Theme.NoTitleBar" android:label="AllowedApplicationList2" android:name=".AllowedApplicationList2" android:excludeFromRecents="true" /> 
     <receiver android:name=".PhoneCallBroadcastReceiver" android:enabled="false"> 
      <intent-filter android:priority="1000"> 
       <action android:name="android.intent.action.PHONE_STATE" /> 
      </intent-filter> 
     </receiver> 
     <receiver android:name=".OutgoingCallBroadcastReceiver" android:enabled="false"> 
      <intent-filter android:priority="0"> 
       <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
      </intent-filter> 
     </receiver> 
     <receiver android:name=".ApplicationBlockBroadcastReceiver" android:enabled="false"> 
      <intent-filter android:priority="100"> 
       <action android:name="com.deemo.kidzone.main.BLOCK" /> 
      </intent-filter> 
     </receiver> 
     <service android:label="LogcatService" android:name=".LogcatService" /> 
     <service android:label="LogcatService2" android:name=".LogcatService2" android:process=":remote" /> 
    </application> 
</manifest> 

コード内のいくつかの興味深いのラインもあり

public static void disableHome(Context paramContext, PackageManager paramPackageManager) 
    { 
    paramPackageManager.setComponentEnabledSetting(new ComponentName(paramContext, "com.deemo.kidzone.main.Home"), 2, 0); 
    } 

    public static void enableHome(Context paramContext, PackageManager paramPackageManager) 
    { 
    paramPackageManager.setComponentEnabledSetting(new ComponentName(paramContext, "com.deemo.kidzone.main.Home"), 1, 1); 
    } 

public void onItemClick(AdapterView paramAdapterView, View paramView, int paramInt, long paramLong) 
    { 
     ApplicationInfo localApplicationInfo = (ApplicationInfo)paramAdapterView.getItemAtPosition(paramInt); 
     if (TextUtils.equals(localApplicationInfo.title, Home.this.getString(2131099745))) 
     { 
     Intent localIntent = new Intent(Home.this, PreferencesProtectionActivity.class); 
     Home.this.startActivityForResult(localIntent, 17); 
     } 
     while (true) 
     { 
     return; 
     if (TextUtils.equals(localApplicationInfo.title, Home.this.getString(2131099746))) 
     { 
      Home.this.startActivityForResult(new Intent(Home.this, ExitProtectionActivity.class), 16); 
      continue; 
     } 
     Home.this.startActivity(localApplicationInfo.intent); 
     Home.lastRunningIntent = localApplicationInfo.intent; 
     Logcat.homeLaunched = false; 
     } 
    } 
    } 

だから、彼らも根なしでホームボタンをブロックする方法、そして私はそれを行うことができますか? http://dl.dropbox.com/u/1928109/kzalvl12.apk ここにはアプリがありますが、市場ライセンスなしでは機能しません。

答えて

1

あなたの活動に以下を追加してください。魔法もやることができます。根付いた電話は必要ありません:)

+0

ありがとうございます!しかし、なぜそれは可能ですか?私は、ホームボタンはいつも自分の携帯電話を制御する必要があるため、常に動作するはずであることを読んだ。 – POMATu

+0

これは、独自の** ScreenLock **ウィジェットをデザインしたい場合に可能です。上記の例では、* feel *は通常のアクティビティを実行するようなものですが、実際にはその特定のアクティビティをスクリーンロックにしています:) – waqaslam

+0

ホームボタンを押すと、この変更をどのようにして開始できますか? (例えば、kidzoneのようなパスワードを入力してください) – POMATu

関連する問題