19
19
20
20
package com .fr3ts0n .ecu .gui .androbd ;
21
21
22
+ import android .annotation .SuppressLint ;
22
23
import android .app .Activity ;
23
24
import android .content .Intent ;
24
25
import android .content .SharedPreferences ;
26
+ import android .os .Build ;
25
27
import android .os .Bundle ;
26
28
import android .preference .EditTextPreference ;
27
29
import android .preference .ListPreference ;
36
38
import com .fr3ts0n .ecu .prot .obd .ObdProt ;
37
39
38
40
import java .util .HashSet ;
41
+ import java .util .Objects ;
39
42
import java .util .Vector ;
40
43
import java .util .logging .Level ;
41
44
import java .util .logging .Logger ;
@@ -108,7 +111,8 @@ protected void onCreate(Bundle savedInstanceState)
108
111
new PrefsFragment ()).commit ();
109
112
}
110
113
111
- public static class PrefsFragment
114
+ @ SuppressLint ("ValidFragment" )
115
+ public class PrefsFragment
112
116
extends PreferenceFragment
113
117
implements Preference .OnPreferenceClickListener ,
114
118
SharedPreferences .OnSharedPreferenceChangeListener
@@ -135,7 +139,7 @@ public void onCreate(Bundle savedInstanceState)
135
139
// set up ELM command selection
136
140
setupElmCmdSelection ();
137
141
// set up ELM adaptive timing mode selection
138
- setupElmTimingSelection ();
142
+ setupElmTimingSelection ();
139
143
// set up selectable PID list
140
144
setupPidSelection ();
141
145
// update network selection fields
@@ -181,11 +185,11 @@ void setupElmTimingSelection()
181
185
int i = 0 ;
182
186
for (ElmProt .AdaptTimingMode mode : values )
183
187
{
184
- titles [i ] = mode .toString ();
185
- keys [i ] = mode .toString ();
186
- i ++;
188
+ titles [i ] = mode .toString ();
189
+ keys [i ] = mode .toString ();
190
+ i ++;
187
191
}
188
- // set enries and keys
192
+ // set entries and keys
189
193
pref .setEntries (titles );
190
194
pref .setEntryValues (keys );
191
195
pref .setDefaultValue (titles [0 ]);
@@ -374,6 +378,17 @@ public void onActivityResult(int requestCode, int resultCode, Intent data)
374
378
{
375
379
ed .putString (key , value );
376
380
pref .setSummary (value != null ? value : getString (R .string .select_extension ));
381
+
382
+ if (value != null )
383
+ {
384
+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .KITKAT )
385
+ {
386
+ /* Remember persistent read permission for selected file,
387
+ otherwise we will NOT be allowed to load it on startup ... ;( */
388
+ getContentResolver ().takePersistableUriPermission (Objects .requireNonNull (data .getData ()),
389
+ Intent .FLAG_GRANT_READ_URI_PERMISSION );
390
+ }
391
+ }
377
392
}
378
393
}
379
394
0 commit comments