mirror of
https://github.com/libretro/Play-.git
synced 2025-03-03 16:57:03 +00:00
Merge pull request #380 from Thunder07/android_permission
Android permission
This commit is contained in:
commit
dd246fa625
@ -3,4 +3,6 @@ package com.virtualapplications.play;
|
||||
public class Constants
|
||||
{
|
||||
public static String TAG = "Play!";
|
||||
public static final int READ_WRITE_PERMISSION = 0;
|
||||
|
||||
}
|
||||
|
@ -5,8 +5,8 @@ import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.net.Uri;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
@ -20,7 +20,7 @@ import com.virtualapplications.play.database.IndexingDB;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
|
||||
public class GameInfoEditActivity extends ActionBarActivity {
|
||||
public class GameInfoEditActivity extends AppCompatActivity {
|
||||
|
||||
private final int SELECT_PHOTO = 1003;
|
||||
private Intent intent;
|
||||
|
@ -1,16 +1,18 @@
|
||||
package com.virtualapplications.play;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.*;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.*;
|
||||
import android.content.pm.*;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.GradientDrawable;
|
||||
import android.os.*;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.app.*;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
@ -23,17 +25,17 @@ import android.widget.GridView;
|
||||
import android.widget.TextView;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import java.io.File;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.text.*;
|
||||
import java.util.*;
|
||||
import java.util.zip.*;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import com.virtualapplications.play.database.GameIndexer;
|
||||
import com.virtualapplications.play.database.GameInfo;
|
||||
import com.virtualapplications.play.database.SqliteHelper.Games;
|
||||
|
||||
public class MainActivity extends ActionBarActivity implements NavigationDrawerFragment.NavigationDrawerCallbacks
|
||||
import static com.virtualapplications.play.ThemeManager.getThemeColor;
|
||||
|
||||
public class MainActivity extends AppCompatActivity implements NavigationDrawerFragment.NavigationDrawerCallbacks
|
||||
{
|
||||
static Activity mActivity;
|
||||
private int currentOrientation;
|
||||
@ -64,15 +66,6 @@ public class MainActivity extends ActionBarActivity implements NavigationDrawerF
|
||||
setContentView(R.layout.main);
|
||||
}
|
||||
|
||||
NativeInterop.setFilesDirPath(Environment.getExternalStorageDirectory().getAbsolutePath());
|
||||
|
||||
EmulatorActivity.RegisterPreferences();
|
||||
|
||||
if(!NativeInterop.isVirtualMachineCreated())
|
||||
{
|
||||
NativeInterop.createVirtualMachine();
|
||||
}
|
||||
|
||||
// if (isAndroidTV(this)) {
|
||||
// // Load the menus for Android TV
|
||||
// } else {
|
||||
@ -89,14 +82,30 @@ public class MainActivity extends ActionBarActivity implements NavigationDrawerF
|
||||
R.id.navigation_drawer,
|
||||
(DrawerLayout) findViewById(R.id.drawer_layout));
|
||||
|
||||
TypedArray a = getTheme().obtainStyledAttributes(new int[]{R.attr.colorPrimaryDark});
|
||||
int attributeResourceId = a.getColor(0, 0);
|
||||
a.recycle();
|
||||
int attributeResourceId = getThemeColor(this, R.attr.colorPrimaryDark);
|
||||
findViewById(R.id.navigation_drawer).setBackgroundColor(Color.parseColor(
|
||||
("#" + Integer.toHexString(attributeResourceId)).replace("#ff", "#8e")
|
||||
));
|
||||
// }
|
||||
|
||||
|
||||
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
|
||||
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, Constants.READ_WRITE_PERMISSION);
|
||||
} else {
|
||||
Startup();
|
||||
}
|
||||
}
|
||||
|
||||
private void Startup() {
|
||||
NativeInterop.setFilesDirPath(Environment.getExternalStorageDirectory().getAbsolutePath());
|
||||
|
||||
EmulatorActivity.RegisterPreferences();
|
||||
|
||||
if(!NativeInterop.isVirtualMachineCreated())
|
||||
{
|
||||
NativeInterop.createVirtualMachine();
|
||||
}
|
||||
|
||||
gameInfo = new GameInfo(MainActivity.this);
|
||||
getContentResolver().call(Games.GAMES_URI, "importDb", null, null);
|
||||
|
||||
@ -105,14 +114,42 @@ public class MainActivity extends ActionBarActivity implements NavigationDrawerF
|
||||
onNavigationDrawerItemSelected(sortMethod);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
|
||||
switch (requestCode) {
|
||||
case Constants.READ_WRITE_PERMISSION: {
|
||||
// If request is cancelled, the result arrays are empty.
|
||||
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
Startup();
|
||||
} else {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
|
||||
builder.setTitle("Permission Request");
|
||||
builder.setMessage("Please Grant Permission,\nWithout Read/Write Permission, PLAY! wouldn't be able to find your games or save your progress.");
|
||||
|
||||
builder.setPositiveButton("OK",
|
||||
new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
AlertDialog dialog = builder.create();
|
||||
dialog.show();
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setUIcolor(){
|
||||
View content = findViewById(R.id.content_frame) ;
|
||||
if (content != null) {
|
||||
int[] colors = new int[2];// you can increase array size to add more colors to gradient.
|
||||
TypedArray a = getTheme().obtainStyledAttributes(new int[]{R.attr.colorPrimary});
|
||||
int topgradientcolor = a.getColor(0, 0);
|
||||
int topgradientcolor = getThemeColor(this, R.attr.colorPrimary);
|
||||
|
||||
a.recycle();
|
||||
float[] hsv = new float[3];
|
||||
Color.colorToHSV(topgradientcolor, hsv);
|
||||
hsv[2] *= 0.8f;// make it darker
|
||||
@ -125,9 +162,7 @@ public class MainActivity extends ActionBarActivity implements NavigationDrawerF
|
||||
GradientDrawable gradientbg = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, colors);
|
||||
content.setBackground(gradientbg);
|
||||
}
|
||||
TypedArray a = getTheme().obtainStyledAttributes(new int[]{R.attr.colorPrimaryDark});
|
||||
int attributeResourceId = a.getColor(0, 0);
|
||||
a.recycle();
|
||||
int attributeResourceId = getThemeColor(this, R.attr.colorPrimaryDark);
|
||||
findViewById(R.id.navigation_drawer).setBackgroundColor(Color.parseColor(
|
||||
("#" + Integer.toHexString(attributeResourceId)).replace("#ff", "#8e")
|
||||
));
|
||||
|
@ -5,15 +5,14 @@ import android.app.Activity;
|
||||
import android.app.Fragment;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.v4.view.GravityCompat;
|
||||
import android.support.v4.widget.DrawerLayout;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.app.ActionBarActivity;
|
||||
import android.support.v7.app.ActionBarDrawerToggle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
@ -25,6 +24,8 @@ import android.widget.ArrayAdapter;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.ListView;
|
||||
|
||||
import static com.virtualapplications.play.ThemeManager.getThemeColor;
|
||||
|
||||
/**
|
||||
* Fragment used for managing interactions for and presentation of a navigation drawer.
|
||||
* See the <a href="https://developer.android.com/design/patterns/navigation-drawer.html#Interaction">
|
||||
@ -90,7 +91,7 @@ public class NavigationDrawerFragment extends Fragment {
|
||||
setHasOptionsMenu(true);
|
||||
|
||||
mDrawerListView.setAdapter(new ArrayAdapter<>(
|
||||
((ActionBarActivity) getActivity()).getSupportActionBar().getThemedContext(),
|
||||
((AppCompatActivity) getActivity()).getSupportActionBar().getThemedContext(),
|
||||
android.R.layout.simple_list_item_activated_1,
|
||||
android.R.id.text1,
|
||||
new String[]{
|
||||
@ -102,14 +103,13 @@ public class NavigationDrawerFragment extends Fragment {
|
||||
//highlight on startup, every other way returns null.
|
||||
mDrawerListView.post(new Runnable() {
|
||||
public void run() {
|
||||
TypedArray a = getActivity().getTheme().obtainStyledAttributes(new int[]{R.attr.colorPrimaryDark});
|
||||
int attributeResourceId = a.getColor(0, 0);
|
||||
int attributeResourceId = getThemeColor(getActivity(), R.attr.colorPrimaryDark);
|
||||
mDrawerListView.getChildAt(mCurrentSelectedPosition).setBackgroundColor(attributeResourceId);
|
||||
}
|
||||
});
|
||||
|
||||
mDrawerListView_bottom.setAdapter(new ArrayAdapter<>(
|
||||
((ActionBarActivity) getActivity()).getSupportActionBar().getThemedContext(),
|
||||
((AppCompatActivity) getActivity()).getSupportActionBar().getThemedContext(),
|
||||
android.R.layout.simple_list_item_activated_1,
|
||||
android.R.id.text1,
|
||||
new String[]{
|
||||
@ -159,7 +159,7 @@ public class NavigationDrawerFragment extends Fragment {
|
||||
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
|
||||
// set up the drawer's list view with items and click listener
|
||||
|
||||
android.support.v7.app.ActionBar actionBar = ((ActionBarActivity) getActivity()).getSupportActionBar();
|
||||
android.support.v7.app.ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
|
||||
actionBar.setDisplayHomeAsUpEnabled(true);
|
||||
actionBar.setHomeButtonEnabled(true);
|
||||
|
||||
@ -168,7 +168,7 @@ public class NavigationDrawerFragment extends Fragment {
|
||||
// between the navigation drawer and the action bar app icon.
|
||||
|
||||
mDrawerToggle = new ActionBarDrawerToggle(
|
||||
(ActionBarActivity) getActivity(), /* host Activity */
|
||||
(AppCompatActivity) getActivity(), /* host Activity */
|
||||
mDrawerLayout, /* DrawerLayout object */
|
||||
R.string.navigation_drawer_open, /* "open drawer" description for accessibility */
|
||||
R.string.navigation_drawer_close /* "close drawer" description for accessibility */
|
||||
@ -226,9 +226,7 @@ public class NavigationDrawerFragment extends Fragment {
|
||||
mDrawerListView.setItemChecked(position, true);
|
||||
for (int i = 0; i < mDrawerListView.getChildCount(); i++) {
|
||||
if(position == i ){
|
||||
//TODO: colour is hardcoded, try getting from theme
|
||||
TypedArray a = getActivity().getTheme().obtainStyledAttributes(new int[]{R.attr.colorPrimaryDark});
|
||||
int attributeResourceId = a.getColor(0, 0);
|
||||
int attributeResourceId = getThemeColor(getActivity(), R.attr.colorPrimaryDark);
|
||||
mDrawerListView.getChildAt(i).setBackgroundColor(attributeResourceId);
|
||||
}else{
|
||||
mDrawerListView.getChildAt(i).setBackgroundColor(Color.TRANSPARENT);
|
||||
@ -309,9 +307,7 @@ public class NavigationDrawerFragment extends Fragment {
|
||||
public void onResume(){
|
||||
super.onResume();
|
||||
if (mDrawerListView != null) {
|
||||
//TODO: colour is hardcoded, try getting from theme
|
||||
TypedArray a = getActivity().getTheme().obtainStyledAttributes(new int[]{R.attr.colorPrimaryDark});
|
||||
int attributeResourceId = a.getColor(0, 0);
|
||||
int attributeResourceId = getThemeColor(getActivity(), R.attr.colorPrimaryDark);
|
||||
View v = mDrawerListView.getChildAt(mCurrentSelectedPosition);
|
||||
if (v != null)
|
||||
v.setBackgroundColor(attributeResourceId);
|
||||
@ -324,7 +320,7 @@ public class NavigationDrawerFragment extends Fragment {
|
||||
* 'context', rather than just what's in the current screen.
|
||||
*/
|
||||
private void showGlobalContextActionBar() {
|
||||
android.support.v7.app.ActionBar actionBar = ((ActionBarActivity) getActivity()).getSupportActionBar();
|
||||
android.support.v7.app.ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
|
||||
actionBar.setDisplayShowTitleEnabled(true);
|
||||
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
|
||||
actionBar.setSubtitle("Navigation");
|
||||
|
@ -1,10 +1,10 @@
|
||||
package com.virtualapplications.play;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.res.TypedArray;
|
||||
import android.os.Build;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.util.TypedValue;
|
||||
import android.view.WindowManager;
|
||||
|
||||
public class ThemeManager
|
||||
@ -61,9 +61,9 @@ public class ThemeManager
|
||||
|
||||
static int getThemeColor(Activity activity, int attribute)
|
||||
{
|
||||
TypedArray a = activity.getTheme().obtainStyledAttributes(new int[] { attribute });
|
||||
int attributeColor = a.getColor(0, 0);
|
||||
a.recycle();
|
||||
return attributeColor;
|
||||
TypedValue typedValue = new TypedValue();
|
||||
activity.getTheme().resolveAttribute(attribute, typedValue, true);
|
||||
int color = typedValue.data;
|
||||
return color;
|
||||
}
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
package="com.virtualapplications.play"
|
||||
android:versionCode="24"
|
||||
android:versionName="0.30">
|
||||
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="22" />
|
||||
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user