0

J'ai créé une application et son supposé demander des autorisations à l'exécution. Mais ce n'est pas demander des autorisations. Je suis en mesure d'accorder des autorisations manuellement à partir des paramètres, mais ne demande pas les autorisations de son propre chef. Aussi quand on clique sur le bouton, c'est supposé demander des permissions et après que les permissions soient accordées, c'est censé afficher des images. Aucune image n'est affichée même après avoir accordé des autorisations manuellement à partir des paramètres. Comment puis-je résoudre ce problème? Quelqu'un peut-il aider?application android ne demande pas les autorisations après l'installation

Bacon1 est l'activité qui contient le bouton cliqué se, et cliquez sur son supposé passer à ActivityHome

Bacon1.java:

public class Bacon1 extends Activity { 

    private static final int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 1; 
    private static int RESULT_LOAD_IMAGE = 1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_bacon1); 


    } 

    private void buttonClicked(View view) { 
     if (ContextCompat.checkSelfPermission(this, 
       Manifest.permission.READ_EXTERNAL_STORAGE) + ContextCompat 
       .checkSelfPermission(this, 
         Manifest.permission.INTERNET) 
       != PackageManager.PERMISSION_GRANTED) { 

      Snackbar.make(view, "Permission not Granted, Requesting permission.", Snackbar.LENGTH_LONG).show(); 
      if (ActivityCompat.shouldShowRequestPermissionRationale(this, 
        Manifest.permission.READ_EXTERNAL_STORAGE)) { 

       Snackbar.make(view, "We need permission to internal storage for displaying songs", Snackbar.LENGTH_LONG).show(); 

      } else { 

       Snackbar.make(view, "Allow myapp3 to access this device's internal storage", Snackbar.LENGTH_LONG).show(); 

       ActivityCompat.requestPermissions(this, 
         new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 
         MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE); 

       // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an 
       // app-defined int constant. The callback method gets the 
       // result of the request. 
      } 
     } 
    } 


    public void onClick2(View view) { 

     buttonClicked(view); 
     Intent viewIntent2 = new Intent(this, ActivityHome.class); 
     startActivity(viewIntent2); 
    } 




    public void onClick5(View view) { 

     Intent viewIntent1 = new Intent(Intent.ACTION_VIEW); 
     File file = new File(Environment.getExternalStoragePublicDirectory(Environment.getExternalStorageDirectory() + "/myapp") + "/" + "downloadedfile.zip"); 
     viewIntent1.setDataAndType(Uri.fromFile(file), "application/zip"); 
     startActivity(Intent.createChooser(viewIntent1, null)); 
    } 





    @Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     switch (requestCode) { 
      case 1: { 
       // If request is cancelled, the result arrays are empty. 
       if (grantResults.length > 0 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        Toast.makeText(Bacon1.this, "WRITE_CONTACTS granted", Toast.LENGTH_SHORT) 
          .show(); 


       } else { 

        Toast.makeText(Bacon1.this, "WRITE_CONTACTS Denied", Toast.LENGTH_SHORT) 
          .show(); 

       } 
       return; 
      } 

      // other 'case' lines to check for other 
      // permissions this app might request 
     } 
    } 
} 

ActivityHome.java :

public class ActivityHome extends AppCompatActivity implements SlideMenuAdapterInterface{ 

    private Context mContext; 
    private Toolbar toolbar; 
    private DrawerLayout Drawer; 
    private ActionBarDrawerToggle mDrawerToggle; 
    private FragmentManager fragmentManager = null; 
    private FragmentTransaction fragmentTransaction = null; 
    private Fragment currentFragment=null; 

    private ListView slidingList; 
    private SlideMenuAdapter mSlideMenuAdapter; 
    private int currentPosition=0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_home); 

     mContext=getApplicationContext(); 
     initializeActionBar(); 
     initialCalling(); 

    } 

    @Override 
    public void onBackPressed() { 
     if(Drawer.isDrawerOpen(Gravity.LEFT)){ 
      Drawer.closeDrawer(Gravity.LEFT); 
     }else{ 
      super.onBackPressed(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    @Override 
    public void slideRowClickEvent(int postion) { 
     if (currentPosition== postion) { 
      closeDrware(); 
      return; 
     } 
     currentPosition= postion; 
     getFragment(postion); 
     attachedFragment(); 
    } 

    private void initializeActionBar() { 
     toolbar = (Toolbar) findViewById(R.id.tool_bar); 
     toolbar.setTitle(""); 
     setSupportActionBar(toolbar); 

     slidingList=(ListView)findViewById(R.id.sliding_listView); 
     mSlideMenuAdapter=new SlideMenuAdapter(mContext, getSlideList()); 
     mSlideMenuAdapter.setSlidemenuadapterinterface(this); 
     slidingList.setAdapter(mSlideMenuAdapter); 

     Drawer = (DrawerLayout) findViewById(R.id.DrawerLayout); 
     mDrawerToggle = new ActionBarDrawerToggle(this, Drawer, toolbar, 
       R.string.openDrawer, R.string.closeDrawer) { 

      @Override 
      public void onDrawerOpened(View drawerView) { 
       super.onDrawerOpened(drawerView); 

      } 

      @Override 
      public void onDrawerClosed(View drawerView) { 
       super.onDrawerClosed(drawerView); 
      } 

     }; 
     Drawer.setDrawerListener(mDrawerToggle); 
     mDrawerToggle.syncState(); 


    } 

    private void closeDrware(){ 
     if(Drawer.isDrawerOpen(Gravity.LEFT)){ 
      Drawer.closeDrawer(Gravity.LEFT); 
     } 
    } 

    private void initialCalling(){ 
     fragmentManager = getSupportFragmentManager(); 
     fragmentTransaction = fragmentManager.beginTransaction(); 

     getFragment(0); 
     attachedFragment(); 
    } 



    private void attachedFragment(){ 
     try { 
      if (currentFragment != null) { 
       if (fragmentTransaction.isEmpty()) { 
        fragmentTransaction.add(R.id.fragment_container, currentFragment,"" + currentFragment.toString()); 
        fragmentTransaction.commit(); 
        toolbar.setTitle(title[currentPosition]); 
       }else { 
        fragmentTransaction = fragmentManager.beginTransaction(); 
        fragmentTransaction.replace(R.id.fragment_container, currentFragment,"" + currentFragment.toString()); 
        fragmentTransaction.commit(); 
        toolbar.setTitle(title[currentPosition]); 
       } 

      } 
      closeDrware(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 


    private void getFragment(int postion){ 
     switch (postion) { 
     case 0: 
      currentFragment = new GalleryFragment(); 
      break; 
     case 1: 
      currentFragment = new CameraFragment(); 
      break; 
     case 2: 
      currentFragment = new VideoFragment(); 
      break; 

     default: 
      break; 
     } 
    } 


    /** 
    * Slide Menu List Array. 
    */ 
    private String[] title={"All Images","Camera","Video"}; 
    private int[] titleLogo={R.drawable.selector_allpic,R.drawable.selector_camera,R.drawable.selector_video}; 
    private ArrayList<SlideData> getSlideList(){ 
     ArrayList<SlideData> arrayList=new ArrayList<SlideData>(); 
     for (int i = 0; i < title.length; i++) { 
      SlideData mSlideData=new SlideData(); 
      mSlideData.setIcon(titleLogo[i]); 
      mSlideData.setName(title[i]); 
      mSlideData.setState((i==0)?1:0); 
      arrayList.add(mSlideData); 
     } 
     return arrayList; 
    } 
} 

AndroidManifest:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.dell_1.copycat2"> 

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" /> 
    <uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 


    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:roundIcon="@mipmap/ic_launcher_round" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".apples" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme.NoActionBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".Bacon1" 
      android:label="activity_bacon1" /> 
     <activity 
      android:name=".activity.ActivityHome" 
      android:label="activity_home" /> 
     <activity 
      android:name=".activity.AlbumActivity" 
      android:label="@string/app_name"> 
     </activity> 
     <activity 
      android:name=".activity.PhotoPreviewActivity" 
      android:label="@string/app_name"> 
     </activity> 
    </application> 

</manifest> 

build.gradle:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 26 
    buildToolsVersion "26.0.1" 
    defaultConfig { 
     applicationId "com.example.dell_1.copycat2" 
     minSdkVersion 15 
     targetSdkVersion 26 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:26.+' 
    compile 'com.android.support.constraint:constraint-layout:1.0.2' 
    compile 'com.android.support:design:26.+' 
    compile files('libs/universal-image-loader-1.9.2-SNAPSHOT-with-sources.jar') 
    testCompile 'junit:junit:4.12' 
} 
+0

Si je remplace + par &&, cela donne une erreur: L'opérateur '&&' ne peut pas être appliqué à 'int', 'boolean' @Pavneet_Singh –

Répondre

0

Première INTERNET n'est pas une autorisation dangerous et n'a donc aucun rôle avec des autorisations d'exécution. Deuxièmement, vous ne pouvez pas ajouter deux résultats checkSelfPermission() ensemble et attendre quelque chose d'utile.

Supprimer + ContextCompat .checkSelfPermission(this, Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED

et voir si cela éclaircit votre problème.

+0

Je l'ai fait, mais cela ne réduit pas mon problème –