Skip to content

Commit b8eedce

Browse files
committed
Add support for Android M (with new permission modes). Resolves #20 and resolves #12
1 parent cd33775 commit b8eedce

4 files changed

Lines changed: 40 additions & 2 deletions

File tree

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
xmlns:tools="http://schemas.android.com/tools"
44
package="com.njlabs.showjava">
55

6+
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
67
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
78
<uses-permission android:name="android.permission.INTERNET" />
89
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

app/src/main/java/com/njlabs/showjava/Constants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public final class Constants {
1111
public static final String PROCESS_DIR = "com.njlabs.showjava.process.DIR";
1212
public static final String PROCESS_PACKAGE_ID = "com.njlabs.showjava.process.PACKAGE_ID";
1313
public static final int PROCESS_NOTIFICATION_ID = 1;
14-
14+
public static final int STORAGE_PERMISSION_REQUEST = 3;
1515
public interface ACTION {
1616
String START_PROCESS = "com.njlabs.showjava.process.action.START";
1717
String STOP_PROCESS = "com.njlabs.showjava.process.action.STOP";

app/src/main/java/com/njlabs/showjava/ui/BaseActivity.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,10 @@ public boolean isLollipop() {
138138
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP;
139139
}
140140

141+
public boolean isMarshmallow() {
142+
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M;
143+
}
144+
141145
public boolean isPro() {
142146
return BuildConfig.IS_PRO;
143147
}

app/src/main/java/com/njlabs/showjava/ui/Landing.java

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.njlabs.showjava.ui;
22

3+
import android.Manifest;
34
import android.annotation.SuppressLint;
45
import android.content.DialogInterface;
56
import android.content.Intent;
@@ -14,6 +15,9 @@
1415
import android.os.Build;
1516
import android.os.Bundle;
1617
import android.os.Environment;
18+
import android.support.annotation.NonNull;
19+
import android.support.v4.app.ActivityCompat;
20+
import android.support.v4.content.ContextCompat;
1721
import android.support.v7.app.AlertDialog;
1822
import android.view.View;
1923
import android.view.ViewGroup;
@@ -23,6 +27,7 @@
2327
import android.widget.LinearLayout;
2428
import android.widget.ListView;
2529
import android.widget.TextView;
30+
import android.widget.Toast;
2631

2732
import com.mikepenz.materialdrawer.Drawer;
2833
import com.mikepenz.materialdrawer.DrawerBuilder;
@@ -33,6 +38,7 @@
3338
import com.mikepenz.materialdrawer.model.ProfileDrawerItem;
3439
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
3540
import com.njlabs.showjava.BuildConfig;
41+
import com.njlabs.showjava.Constants;
3642
import com.njlabs.showjava.R;
3743
import com.njlabs.showjava.utils.SourceInfo;
3844
import com.njlabs.showjava.utils.Utils;
@@ -113,11 +119,23 @@ public boolean onItemClick(AdapterView<?> parent, View view, int position, long
113119
.withCloseOnClick(true)
114120
.build();
115121

122+
if(isMarshmallow()){
123+
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
124+
ActivityCompat.requestPermissions(this, new String[]{ Manifest.permission.WRITE_EXTERNAL_STORAGE }, Constants.STORAGE_PERMISSION_REQUEST);
125+
} else {
126+
initHistoryLoader();
127+
}
128+
} else {
129+
initHistoryLoader();
130+
}
131+
116132

133+
}
134+
135+
public void initHistoryLoader(){
117136
HistoryLoader historyLoader = new HistoryLoader();
118137
historyLoader.execute();
119138
}
120-
121139
public void SetupList(List<SourceInfo> AllPackages) {
122140

123141
if (AllPackages.size() < 1) {
@@ -370,4 +388,19 @@ protected void onProgressUpdate(String... text) {
370388
}
371389
}
372390

391+
@Override
392+
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
393+
switch (requestCode) {
394+
case Constants.STORAGE_PERMISSION_REQUEST: {
395+
if (grantResults.length > 0
396+
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
397+
initHistoryLoader();
398+
} else {
399+
Toast.makeText(baseContext, "Storage permission is required to use this app", Toast.LENGTH_LONG).show();
400+
finish();
401+
}
402+
}
403+
404+
}
405+
}
373406
}

0 commit comments

Comments
 (0)