kopia lustrzana https://github.com/xdsopl/robot36
handle new Android 6.0 permissions
rodzic
9a674291f2
commit
743676f49f
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
|
|
||||||
package xdsopl.robot36;
|
package xdsopl.robot36;
|
||||||
|
|
||||||
|
import android.Manifest;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
|
@ -26,6 +27,7 @@ import android.content.ContentValues;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
|
@ -34,6 +36,7 @@ import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.provider.MediaStore;
|
import android.provider.MediaStore;
|
||||||
|
import android.support.v4.app.ActivityCompat;
|
||||||
import android.support.v4.app.NotificationCompat;
|
import android.support.v4.app.NotificationCompat;
|
||||||
import android.support.v4.content.ContextCompat;
|
import android.support.v4.content.ContextCompat;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
@ -49,7 +52,9 @@ import java.io.File;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class MainActivity extends Activity {
|
public class MainActivity extends Activity {
|
||||||
private Decoder decoder;
|
private Decoder decoder;
|
||||||
|
@ -58,6 +63,7 @@ public class MainActivity extends Activity {
|
||||||
private NotificationManager manager;
|
private NotificationManager manager;
|
||||||
private ShareActionProvider share;
|
private ShareActionProvider share;
|
||||||
private int notifyID = 1;
|
private int notifyID = 1;
|
||||||
|
private int permissionsID = 2;
|
||||||
private boolean enableAnalyzer = true;
|
private boolean enableAnalyzer = true;
|
||||||
private Menu menu;
|
private Menu menu;
|
||||||
|
|
||||||
|
@ -184,9 +190,33 @@ public class MainActivity extends Activity {
|
||||||
builder.show();
|
builder.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
|
||||||
|
if (requestCode != permissionsID)
|
||||||
|
return;
|
||||||
|
for (int result : grantResults)
|
||||||
|
if (result != PackageManager.PERMISSION_GRANTED)
|
||||||
|
return;
|
||||||
|
startDecoder();
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean permissionsGranted() {
|
||||||
|
List<String> permissions = new ArrayList<>();
|
||||||
|
if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED)
|
||||||
|
permissions.add(Manifest.permission.RECORD_AUDIO);
|
||||||
|
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
|
||||||
|
permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||||
|
if (permissions.isEmpty())
|
||||||
|
return true;
|
||||||
|
ActivityCompat.requestPermissions(this, permissions.toArray(new String[permissions.size()]), permissionsID);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
protected void startDecoder() {
|
protected void startDecoder() {
|
||||||
if (decoder != null)
|
if (decoder != null)
|
||||||
return;
|
return;
|
||||||
|
if (!permissionsGranted())
|
||||||
|
return;
|
||||||
try {
|
try {
|
||||||
decoder = new Decoder(this,
|
decoder = new Decoder(this,
|
||||||
(SpectrumView) findViewById(R.id.spectrum),
|
(SpectrumView) findViewById(R.id.spectrum),
|
||||||
|
@ -196,10 +226,10 @@ public class MainActivity extends Activity {
|
||||||
);
|
);
|
||||||
decoder.enable_analyzer(enableAnalyzer);
|
decoder.enable_analyzer(enableAnalyzer);
|
||||||
showNotification();
|
showNotification();
|
||||||
|
updateMenuButtons();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
showErrorMessage(getString(R.string.decoder_error), e.getMessage(), Log.getStackTraceString(e));
|
showErrorMessage(getString(R.string.decoder_error), e.getMessage(), Log.getStackTraceString(e));
|
||||||
}
|
}
|
||||||
updateMenuButtons();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void toggleDecoder() {
|
protected void toggleDecoder() {
|
||||||
|
|
Ładowanie…
Reference in New Issue