2016-11-09 3 views
-2

Ich versuche, den Ordner meiner App von data/data zugreifen, aber es muss die Berechtigung zu 0777 ändern. Also habe ich Code verwendet, der zur Laufzeit geändert werden kann, aber die Berechtigungen ändern sich nicht. Es gibt mir Fehler open failed: EACCES (Permission denied). Ich diese Erlaubnis auch unter Eibisch in Manifest-Datei setzen i wie in root explorer geben müssen, wo wir den Ordner rwxrwxrwmüssen auf die Systemberechtigung zugreifen

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Hier dies ist mein Code

String[] command = new String[]{"/system/bin/ls", "0777", 
         "/data/data/com.ayub.android.baba" }; 
    process = Runtime.getRuntime().exec(command); 
    BufferedReader reader = new BufferedReader(
      new InputStreamReader(process.getInputStream())); 
    int read; 

    String output = ""; 

    String line; 
    while ((line = reader.readLine()) != null) { 
     output.concat(line + "\n"); 
     Log.w("myApp", "[[output]]:" + line); 
     process.waitFor(); 
    } 
    reader.close(); 
    process.waitFor(); 
} catch (Exception e) { 
    Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT).show(); 
    Log.d(TAG,e.toString()); 
} 
+0

Sie benötigen Laufzeit-Erlaubnis hinzufügen vor dem Zugriff auf gefährliche Berechtigungen. –

+0

'ls' ist nicht für die Erlaubnisänderung geeignet. –

+0

https://developer.android.com/training/permissions/requesting.html –

Antwort

1

Hier ändern, entwickelte ich eine Klasse für Erlaubnis für Marshmallow-Gerät geben.

Getpermission.java

public class GetPermission extends Activity { 

private static final int REQUEST_CODE = 2; 
private static final int REQUEST_PERMISSIONS = 10; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    if (Build.VERSION.SDK_INT >=23) 
    { 
     getPermission(); 
    } 
    else 
    { 
     startService(); 
    } 

} 

private void getPermission() 
{ 
    if (ContextCompat.checkSelfPermission(GetPermission.this, Manifest.permission.READ_EXTERNAL_STORAGE) 
      + ContextCompat.checkSelfPermission(GetPermission.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) 
      != PackageManager.PERMISSION_GRANTED) { 

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

    } 
    else 
    { 
     startService(); 
    } 
} 
private void startService() 
{ 

    //In this intent add your starting first activity 

    Intent in = new Intent(getApplicationContext(),HomeScreen.class); 
    startActivity(in) 
    finish(); 
} 

@Override 
public void onRequestPermissionsResult(final int requestCode, @NonNull final String[] permissions, @NonNull final int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    if (requestCode == REQUEST_PERMISSIONS) { 
     if ((grantResults.length > 0) && (grantResults[0]+grantResults[1]+grantResults[2]) 
       == PackageManager.PERMISSION_GRANTED) { 

      getWindowOverLayPermission(); 
     } else { 
      Toast.makeText(GetPermission.this, "All Permission is required to use xyz", Toast.LENGTH_LONG).show(); 
      finish(); 
     } 
    } 
} 

@TargetApi(Build.VERSION_CODES.M) 
private void getWindowOverLayPermission() 
{ 
    if (!Settings.canDrawOverlays(GetPermission.this)) 
    { 
     Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, 
       Uri.parse("package:" + getPackageName())); 
     startActivityForResult(intent, REQUEST_CODE); 
    } 
    else 
    { 
     startService(); 
    } 
} 



@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 

    if (requestCode == REQUEST_CODE) 
    { 
     Toast.makeText(GetPermission.this, "Windows Overlay Permission is required",Toast.LENGTH_LONG).show(); 
     getWindowOverLayPermission(); 
    } 
    else 
    { 
     startService(); 
    } 

} 
} 

Danach Ihre Manifest.xml

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

<uses-permission android:name="android.permission.INTERNET"/> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/icon_256" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/MyMaterialTheme" > 
    <activity android:name=".Permission.GetPermission" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".Activity.HomeScreen"/> 
</application> 

Hoffnung ändern, es wird Ihnen helfen, ...

+0

Entschuldigung, aber nicht diese Erlaubnis wie wir im root Explorer geben rwxrwrw –

+0

in welcher Android-Version Sie diese App testen ?? –

+0

Android Version 4.4.4 kitkat –

Verwandte Themen