Advertisement
slemos96

Untitled

Dec 4th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.37 KB | None | 0 0
  1. /***
  2.  Copyright (c) 2015 CommonsWare, LLC
  3.  Licensed under the Apache License, Version 2.0 (the "License"); you may not
  4.  use this file except in compliance with the License. You may obtain a copy
  5.  of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required
  6.  by applicable law or agreed to in writing, software distributed under the
  7.  License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
  8.  OF ANY KIND, either express or implied. See the License for the specific
  9.  language governing permissions and limitations under the License.
  10.  
  11.  From _The Busy Coder's Guide to Android Development_
  12.  https://commonsware.com/Android
  13.  */
  14.  
  15. package com.commonsware.android.permmonger;
  16.  
  17. import android.Manifest;
  18. import android.app.Activity;
  19. import android.content.pm.PackageManager;
  20. import android.os.Bundle;
  21. import android.view.Menu;
  22. import android.view.MenuItem;
  23. import android.widget.TextView;
  24. import android.widget.Toast;
  25.  
  26. public class MainActivity extends Activity {
  27.   private static final String[] INITIAL_PERMS={
  28.     Manifest.permission.ACCESS_FINE_LOCATION,
  29.     Manifest.permission.READ_CONTACTS
  30.   };
  31.   private static final String[] CAMERA_PERMS={
  32.     Manifest.permission.CAMERA
  33.   };
  34.   private static final String[] CONTACTS_PERMS={
  35.       Manifest.permission.READ_CONTACTS
  36.   };
  37.   private static final String[] LOCATION_PERMS={
  38.       Manifest.permission.ACCESS_FINE_LOCATION
  39.   };
  40.   private static final int INITIAL_REQUEST=1337;
  41.   private static final int CAMERA_REQUEST=INITIAL_REQUEST+1;
  42.   private static final int CONTACTS_REQUEST=INITIAL_REQUEST+2;
  43.   private static final int LOCATION_REQUEST=INITIAL_REQUEST+3;
  44.   private TextView location;
  45.   private TextView camera;
  46.   private TextView internet;
  47.   private TextView contacts;
  48.   private TextView storage;
  49.  
  50.   @Override
  51.   protected void onCreate(Bundle savedInstanceState) {
  52.     super.onCreate(savedInstanceState);
  53.     setContentView(R.layout.main);
  54.  
  55.     location=(TextView)findViewById(R.id.location_value);
  56.     camera=(TextView)findViewById(R.id.camera_value);
  57.     internet=(TextView)findViewById(R.id.internet_value);
  58.     contacts=(TextView)findViewById(R.id.contacts_value);
  59.     storage=(TextView)findViewById(R.id.storage_value);
  60.  
  61.     if (!canAccessLocation() || !canAccessContacts()) {
  62.       requestPermissions(INITIAL_PERMS, INITIAL_REQUEST);
  63.     }
  64.   }
  65.  
  66.   @Override
  67.   protected void onResume() {
  68.     super.onResume();
  69.  
  70.     updateTable();
  71.   }
  72.  
  73.   @Override
  74.   public boolean onCreateOptionsMenu(Menu menu) {
  75.     getMenuInflater().inflate(R.menu.actions, menu);
  76.  
  77.     return(super.onCreateOptionsMenu(menu));
  78.   }
  79.  
  80.   @Override
  81.   public boolean onOptionsItemSelected(MenuItem item) {
  82.     switch(item.getItemId()) {
  83.       case R.id.camera:
  84.         if (canAccessCamera()) {
  85.           doCameraThing();
  86.         }
  87.         else {
  88.           requestPermissions(CAMERA_PERMS, CAMERA_REQUEST);
  89.         }
  90.         return(true);
  91.  
  92.       case R.id.contacts:
  93.         if (canAccessContacts()) {
  94.           doContactsThing();
  95.         }
  96.         else {
  97.           requestPermissions(CONTACTS_PERMS, CONTACTS_REQUEST);
  98.         }
  99.         return(true);
  100.  
  101.       case R.id.location:
  102.         if (canAccessLocation()) {
  103.           doLocationThing();
  104.         }
  105.         else {
  106.           requestPermissions(LOCATION_PERMS, LOCATION_REQUEST);
  107.         }
  108.         return(true);
  109.     }
  110.  
  111.     return(super.onOptionsItemSelected(item));
  112.   }
  113.  
  114.   @Override
  115.   public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
  116.     updateTable();
  117.  
  118.     switch(requestCode) {
  119.       case CAMERA_REQUEST:
  120.         if (canAccessCamera()) {
  121.           doCameraThing();
  122.         }
  123.         else {
  124.           bzzzt();
  125.         }
  126.         break;
  127.  
  128.       case CONTACTS_REQUEST:
  129.         if (canAccessContacts()) {
  130.           doContactsThing();
  131.         }
  132.         else {
  133.           bzzzt();
  134.         }
  135.         break;
  136.  
  137.       case LOCATION_REQUEST:
  138.         if (canAccessLocation()) {
  139.           doLocationThing();
  140.         }
  141.         else {
  142.           bzzzt();
  143.         }
  144.         break;
  145.     }
  146.   }
  147.  
  148.   private void updateTable() {
  149.     location.setText(String.valueOf(canAccessLocation()));
  150.     camera.setText(String.valueOf(canAccessCamera()));
  151.     internet.setText(String.valueOf(hasPermission(Manifest.permission.INTERNET)));
  152.     contacts.setText(String.valueOf(canAccessContacts()));
  153.     storage.setText(String.valueOf(hasPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)));
  154.   }
  155.  
  156.   private boolean canAccessLocation() {
  157.     return(hasPermission(Manifest.permission.ACCESS_FINE_LOCATION));
  158.   }
  159.  
  160.   private boolean canAccessCamera() {
  161.     return(hasPermission(Manifest.permission.CAMERA));
  162.   }
  163.  
  164.   private boolean canAccessContacts() {
  165.     return(hasPermission(Manifest.permission.READ_CONTACTS));
  166.   }
  167.  
  168.   private boolean hasPermission(String perm) {
  169.     return(PackageManager.PERMISSION_GRANTED==checkSelfPermission(perm));
  170.   }
  171.  
  172.   private void bzzzt() {
  173.     Toast.makeText(this, R.string.toast_bzzzt, Toast.LENGTH_LONG).show();
  174.   }
  175.  
  176.   private void doCameraThing() {
  177.     Toast.makeText(this, R.string.toast_camera, Toast.LENGTH_SHORT).show();
  178.   }
  179.  
  180.   private void doContactsThing() {
  181.     Toast.makeText(this, R.string.toast_contacts, Toast.LENGTH_SHORT).show();
  182.   }
  183.  
  184.   private void doLocationThing() {
  185.     Toast.makeText(this, R.string.toast_location, Toast.LENGTH_SHORT).show();
  186.   }
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement