2016-12-22 8 views
1

ここは私のJavaクラスです。私のプロジェクトであなたのPreferenceActivityの実装は、フラグメントインジェクションに対して脆弱です

public class MyPrefrences extends PreferenceActivity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    addPreferencesFromResource(R.xml.preferences); 
} 

}

は、私は、この新しいGoogleのセキュリティポリシーに応じて修正することができますどのようにあるpreferences.xml

<PreferenceScreen 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

<PreferenceCategory 
     android:title="@string/steps_settings_title"> 

    <ListPreference 
      android:key="sensitivity" 
      android:title="@string/setting" 
      android:summary="@string/setting_details" 
      android:entries="@array/preference" 
      android:entryValues="@array/preference_values" 
      android:dialogTitle="@string/setting_title" 
      android:defaultValue="30" /> 

    <ListPreference 
      android:key="operation_level" 
      android:title="@string/operation_level_setting" 
      android:summary="@string/operation_level_setting_details" 
      android:entries="@array/operation_level_preference" 
      android:entryValues="@array/operation_level_preference_values" 
      android:dialogTitle="@string/operation_level_setting_title" 
      android:defaultValue="30" /> 

    <ListPreference 
      android:key="units" 
      android:title="@string/units_setting" 
      android:summary="@string/units_setting_details" 
      android:entries="@array/units_preference" 
      android:entryValues="@array/units_preference_values" 
      android:dialogTitle="@string/units_setting_title" 
      android:defaultValue="imperial" /> 

    <com.example.myapp.preferences.StepLengthPreference 
      android:key="length" 
      android:title="@string/length_setting" 
      android:summary="@string/length_setting_details" 
      android:dialogTitle="@string/length_setting_title" 
      android:defaultValue="20" /> 

    <com.example.myapp.preferences.BodyWeightPreference 
      android:key="body_weight" 
      android:title="@string/weight_setting" 
      android:summary="@string/weight_setting_details" 
      android:dialogTitle="@string/weight_setting_title" 
      android:defaultValue="50" /> 

    <ListPreference 
      android:key="exercise_type" 
      android:title="@string/type_setting" 
      android:summary="@string/type_setting_details" 
      android:entries="@array/type_preference" 
      android:entryValues="@array/type_preference_values" 
      android:dialogTitle="@string/type_setting_title" 
      android:defaultValue="running" /> 

    <ListPreference 
      android:key="maintain" 
      android:title="@string/maintain_setting" 
      android:summary="@string/maintain_setting_details" 
      android:entries="@array/maintain_preference" 
      android:entryValues="@array/maintain_preference_values" 
      android:dialogTitle="@string/maintain_setting_title" 
      android:defaultValue="none" /> 

</PreferenceCategory> 


</PreferenceScreen> 

を使用しました。 PreferenceActivityクラスがFragment Injectionの影響を受ける可能性のある安全でない実装がアプリにあります。 マニフェストで影響を受けるPreferenceActivityのexported = falseを設定します isValidFragmentの不正な実装 どのように修正できますか?

+1

あなたは、メッセージが提案し何をして試してみましたか? 'あなたのマニフェストの影響を受けたPreferenceActivityに' exported = falseをセットしましたか? –

+0

上記のクラスのisValidFragmentをどのようにオーバーライドできますか? –

+0

exported = false、それは私のscenerioで機能しません。 –

答えて

0

このコードは私のために完璧に動作します:

public class MyPrefrence extends PreferenceActivity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


    getFragmentManager().beginTransaction() 
      .replace(android.R.id.content, new MyPreferenceFragment()) 
      .commit(); 

} 

public static class MyPreferenceFragment extends PreferenceFragment { 
    @Override 
    public void onCreate(final Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.preferences); 
    } 
} 

} 
関連する問題