Skip to content

Commit

Permalink
#8: Implemented Android-6 Runtime permission request.
Browse files Browse the repository at this point in the history
  • Loading branch information
k3b committed Dec 23, 2017
1 parent 3600626 commit 7411c7a
Show file tree
Hide file tree
Showing 20 changed files with 155 additions and 35 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ android:
# values in gradle.properties and .travis must be the same
# - build-tools-24.0.2
- build-tools-25.0.2
- android-21
- android-23

- add-on
- extra
Expand Down
7 changes: 5 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
apply plugin: 'com.android.application'

android {
// compileSdkVersion 26
compileSdkVersion 23
buildToolsVersion '25.0.2'
defaultConfig {
applicationId 'de.k3b.android.toGoZip'
minSdkVersion 7
targetSdkVersion 21 // 23
// targetSdkVersion 26
targetSdkVersion 23
versionCode 11
versionName '2.0.11.171227'

Expand Down Expand Up @@ -50,7 +52,8 @@ dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// compile 'eu.lp0.slf4j:slf4j-android:1.7.7-1'
// compile 'com.android.support:appcompat-v7:20.0.0'
compile 'com.android.support:support-v4:21.0.2' //23.2.1'
// compile 'com.android.support:support-v4:26.2.1'
compile 'com.android.support:support-v4:23.2.1'
compile project(':libK3bZip')
// compile 'org.slf4j:slf4j-android:1.7.7@jar' // replaces cellInfoLib.'slf4j-api'
compile 'eu.lp0.slf4j:slf4j-android:1.7.7-1@jar'
Expand Down
19 changes: 17 additions & 2 deletions app/src/main/java/de/k3b/android/ToGoZip/Add2ZipActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
package de.k3b.android.toGoZip;

import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.widget.Toast;

import de.k3b.android.AndroidCompressJob;
Expand All @@ -31,7 +32,8 @@
* This pseudo activity has no gui. It starts add2zip from intent-data
* or starts the settings-activity if the zip-output-dir is write-protected
*/
public class Add2ZipActivity extends LocalizedActivity {
public class Add2ZipActivity extends LocalizedActivity
implements ActivityCompat.OnRequestPermissionsResultCallback {
/**
* caption for logging
*/
Expand All @@ -40,8 +42,21 @@ public class Add2ZipActivity extends LocalizedActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
boolean canWrite = SettingsImpl.init(this);
if (PermissionHelper.hasPermissionOrRequest(this)) {
executeZipJob();
}
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions,
int[] grantResults) {
if (PermissionHelper.receivedPermissionsOrFinish(this, requestCode, permissions, grantResults)) {
executeZipJob();
}
}

private void executeZipJob() {
boolean canWrite = SettingsImpl.init(this);
ZipLog zipLog = new ZipLogImpl(Global.debugEnabled);
IntentParser intentParser = new IntentParser(this, getIntent(), zipLog);

Expand Down
101 changes: 101 additions & 0 deletions app/src/main/java/de/k3b/android/ToGoZip/PermissionHelper.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
/*
* Copyright (C) 2017-2018 k3b
*
* This file is part of de.k3b.android.toGoZip (https://github.com/k3b/ToGoZip/) .
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>
*/
package de.k3b.android.toGoZip;

import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.util.Log;
import android.widget.Toast;

/**
* Support for android-6.0 (M) ff runtime permissons.
* Created by k3b on 23.12.2017.
*
* implements ActivityCompat.OnRequestPermissionsResultCallback
*/

public class PermissionHelper {
/**
* Id to identify a Storage permission request.
*/
private static final int REQUEST_CODE_STORAGE = 215;

/**
* Permissions required to read and write Storage.
*/
private static String[] PERMISSIONS_STORAGE = {Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE};

/**
* called before permission is required.
*
* @return true if has-permissions. else false and request permissions
* */
public static boolean hasPermissionOrRequest(Activity context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
boolean needsRead = ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED;

boolean needsWrite = ActivityCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED;

if (needsRead || needsWrite) {
// Storage permission has not been requeste yet. Request for first time.
ActivityCompat.requestPermissions(context, PERMISSIONS_STORAGE, REQUEST_CODE_STORAGE);
// no permission yet
return false;
}
} // if android-m

// already has permission.
return true;
}

/**
* called in onRequestPermissionsResult().
*
* @return true if just received permissions. else false and calling finish
*/
public static boolean receivedPermissionsOrFinish(Activity activity, int requestCode,
@NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == REQUEST_CODE_STORAGE) {
if ( (grantResults.length == 2)
&& (grantResults[0] == PackageManager.PERMISSION_GRANTED)
&& (grantResults[1] == PackageManager.PERMISSION_GRANTED)) {
return true;
} else {
String format = activity.getString(R.string.ERR_NO_WRITE_PERMISSIONS);

String msg = String.format(
format,
"",
"");

activity.finish();
Toast.makeText(activity, msg, Toast.LENGTH_LONG).show();
}
}
return false;
}
}
17 changes: 16 additions & 1 deletion app/src/main/java/de/k3b/android/ToGoZip/SettingsActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.support.v4.app.ActivityCompat;
import android.util.Log;
import android.widget.Toast;
import android.support.v4.provider.DocumentFile;
Expand All @@ -49,7 +50,8 @@
/**
* show settings/config activity. On Start and Exit checks if data is valid.
*/
public class SettingsActivity extends PreferenceActivity {
public class SettingsActivity extends PreferenceActivity
implements ActivityCompat.OnRequestPermissionsResultCallback {

private static final int REQUEST_CODE_GET_ZIP_DIR = 12;
private static final int FOLDERPICKER_CODE = 1234;
Expand Down Expand Up @@ -86,6 +88,19 @@ public static void show(Context context, CompressItem[] filesToBeAdded, String t
protected void onCreate(final Bundle savedInstanceState) {
LocalizedActivity.fixLocale(this); // #6: Support to change locale at runtime
super.onCreate(savedInstanceState);
if (PermissionHelper.hasPermissionOrRequest(this)) {
initActivity();
}
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions,
int[] grantResults) {
if (PermissionHelper.receivedPermissionsOrFinish(this, requestCode, permissions, grantResults)) {
initActivity();
}
}
private void initActivity() {
SettingsImpl.init(this);
ZipLog zipLog = new ZipLogImpl(Global.debugEnabled);

Expand Down
3 changes: 1 addition & 2 deletions app/src/main/res/values-bn/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@ this program. If not, see <http://www.gnu.org/licenses/>
<string name="cmd_edit">সম্পাদনা করুন</string>
<string name="ERR_ADD"><![CDATA["%1$s হালনাগাদ করা যায়নি:
%2$s"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["%1$s %2$s জন্য লিখতে অনুমতি নেই।
(Sdcard হার্ডওয়্যার আছে এবং sdcard সওয়ার হয়?)"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["%1$s %2$s জন্য লিখতে অনুমতি নেই।"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS_CHANGE_TO_DEFAULT"><![CDATA["'%1$s' কাছে বর্তমান লেখার জন্য কোন অনুমতি জিপ। আপনি পূর্ব-নির্ধারিত
'%2$s' এর পরিবর্তে ব্যবহার করতে চান? "]]></string>
<string name="WARN_ADD_NO_CHANGES"><![CDATA["ফাইল অন্তর্ভুক্ত in
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/res/values-de/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@ this program. If not, see <http://www.gnu.org/licenses/>

<string name="ERR_ADD"><![CDATA["Konnte %1$s nicht aktualisieren :
%2$s"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["Keine Schreibberechtigung für %1$s %2$s.
(Unterstützt das Gerät externe Speicherkarten und ist eine eingelegt?)"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["Keine Schreibberechtigung für %1$s %2$s."]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS_CHANGE_TO_DEFAULT"><![CDATA["Keine Schreibberechtigung für die aktuelle Zip-Datei '%1$s'.
Möchten Sie statt dessen den Standardwert '%2$s' verwenden? "]]></string>
<string name="WARN_ADD_NO_CHANGES"><![CDATA["Die Dateien sind bereit in der Zip-Datei enthalten
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/res/values-es/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@ this program. If not, see <http://www.gnu.org/licenses/>
<string name="cmd_edit">Editar</string>
<string name="ERR_ADD"><![CDATA["No se puede actualizar %1$s:
%2$s"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["Sin permisos para escribir en %1$s %2$s.
(¿Hay una tarjeta SD y está montada?)"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["Sin permisos para escribir en %1$s %2$s."]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS_CHANGE_TO_DEFAULT"><![CDATA["Sin permisos para escribir al zip '%1$s'.
¿Quieres usar '%2$s' por defecto en su lugar? "]]></string>
<string name="WARN_ADD_NO_CHANGES"><![CDATA["Los archivos ya están incluidos en
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@ this program. If not, see <http://www.gnu.org/licenses/>

<string name="ERR_ADD"><![CDATA["Impossible d'actualiser %1$s :
%2$s"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["Aucune autorisation d'écrire sur %1$s %2$s.
(Y a-t-il une carte SD, et est-elle montée ?)"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["Aucune autorisation d'écrire sur %1$s %2$s."]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS_CHANGE_TO_DEFAULT"><![CDATA["Aucune autorisation d'écrire dans le zip actuel '%1$s'.
Voulez-vous utiliser l'emplacement par défaut '%2$s' à la place? "]]></string>
<string name="WARN_ADD_NO_CHANGES"><![CDATA["Les fichiers sont déjà inclus dans
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/res/values-hu/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@ this program. If not, see <http://www.gnu.org/licenses/>
<string name="cmd_cancel">Megszünteti</string>
<string name="cmd_edit">Szerkesztése</string>
<string name="ERR_ADD"><![CDATA["Nem sikerült frissíteni a %1$s:%2$s"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["Nincs jogosultsága a következőre:%1$s%2$s.
(Van-e sdcard hardver és az Sd kártya fel van szerelve?)"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["Nincs jogosultsága a következőre:%1$s%2$s."]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS_CHANGE_TO_DEFAULT"><![CDATA["Msgstr 'Nincs jogosultság az aktuális zipre írni: '%1$s'.
Szeretné használni az alapértelmezett '%2$s' értéket? "]]></string>
<string name="WARN_ADD_NO_CHANGES"><![CDATA["Msgstr "A fájlok már szerepelnek
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/values-in/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ this program. If not, see <http://www.gnu.org/licenses/>
<string name="cmd_cancel">Batal</string>
<string name="cmd_edit">Sunting</string>
<string name="ERR_ADD">Tidak dapat memperbarui %1$s: \n%2$s</string>
<string name="ERR_NO_WRITE_PERMISSIONS">Tidak ada izin untuk menulis ke %1$s %2$s. (Apakah kartu Sd disisipkan dan dipasang?)</string>
<string name="ERR_NO_WRITE_PERMISSIONS">Tidak ada izin untuk menulis ke %1$s %2$s.</string>
<string name="ERR_NO_WRITE_PERMISSIONS_CHANGE_TO_DEFAULT">Tidak ada izin untuk menulis padaa zip saat ini \'%1$s\'. Apakah Anda ingin menggunakan default %2$s sebagai gantinya? </string>
<string name="WARN_ADD_NO_CHANGES">Berkas sudah termasuk dalam \n%1$s</string>
<string name="SUCCESS_ADD">tambahkan berkas(-berkas) %2$d ke \n%1$s</string>
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/res/values-ja/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@ this program. If not, see <http://www.gnu.org/licenses/>

<string name="ERR_ADD"><![CDATA["更新できません %1$s :
%2$s"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["書き込みアクセス許可がありません %1$s %2$s。
(SD カードが挿入されて、かつマウントされていますか?)"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["書き込みアクセス許可がありません %1$s %2$s。"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS_CHANGE_TO_DEFAULT"><![CDATA["現在の zip に書き込みアクセス許可がありません '%1$s'。
代わりに、デフォルトの '%2$s' を使用しますか? "]]></string>
<string name="WARN_ADD_NO_CHANGES"><![CDATA["ファイルはすでに含まれています
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/res/values-nl/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@ this program. If not, see <http://www.gnu.org/licenses/>
<string name="cmd_edit">Bewerken</string>
<string name="ERR_ADD"><![CDATA["Kan niet updaten %1$s :
%2$s"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["Geen machtigingen om te schrijven naar %1$s %2$s.
(Is er sdcard-hardware en is de sdcard gemonteerd?)"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["Geen machtigingen om te schrijven naar %1$s %2$s. "]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS_CHANGE_TO_DEFAULT"><![CDATA["Geen rechten om te schrijven naar huidige zip '%1$s '.
Wilt u standaard '%2$s ' gebruiken? "]]></string>
<string name="WARN_ADD_NO_CHANGES"><![CDATA["Bestanden zijn al opgenomen in
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/res/values-no/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@ this program. If not, see <http://www.gnu.org/licenses/>
<string name="cmd_cancel">Avbryt</string>
<string name="cmd_edit">Redigere</string>
<string name="ERR_ADD"><![CDATA["Kunne ikke oppdatere %1$s: %2$s"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["Ingen tillatelser å skrive til %1$s %2$s.
(Er det sdcard-maskinvare og er Sd-kortet montert?)"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["Ingen tillatelser å skrive til %1$s %2$s."]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS_CHANGE_TO_DEFAULT"><![CDATA["Ingen tillatelser til å skrive til gjeldende zip '%1$s'.
Vil du bruke standard '%2$s' i stedet? "]]></string>
<string name="WARN_ADD_NO_CHANGES"><![CDATA["Filene er allerede inkludert i
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/res/values-pt/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@ this program. If not, see <http://www.gnu.org/licenses/>
<string name="cmd_cancel">Cancelar</string>
<string name="cmd_edit">Editar</string>
<string name="ERR_ADD"><![CDATA["Não foi possivel atualizar o %1$s:%2$s"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS">Não há permissões para gravar %1$s %2$s.
(Existe sdcard-Hardware e é montado o sdcard?)</string>
<string name="ERR_NO_WRITE_PERMISSIONS">Não há permissões para gravar %1$s %2$s.</string>
<string name="ERR_NO_WRITE_PERMISSIONS_CHANGE_TO_DEFAULT"><![CDATA["Não há permissões para gravar a atual zip '%1$s'.
Você quer usar o padrão '%2$s' em vez?"]]></string>
<string name="WARN_ADD_NO_CHANGES"><![CDATA["Arquivos já estão incluidos no %1$s"]]></string>
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/res/values-tr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@ this program. If not, see <http://www.gnu.org/licenses/>
<string name="cmd_edit">Düzenle</string>
<string name="ERR_ADD"><![CDATA["%1$s :
%2$s güncelleştirilemedi"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["%1$s %2$s 'ye yazma izni yok.
(SD kart donanımı var mı ve SD kart takılı mı?)"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["%1$s %2$s 'ye yazma izni yok."]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS_CHANGE_TO_DEFAULT"><![CDATA["Geçerli zip '%1$s' için yazma izni yok.
Bunun yerine varsayılan '%2$s' kullanmak istiyor musunuz?"]]></string>
<string name="WARN_ADD_NO_CHANGES"><![CDATA["Dosyalar zaten
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/res/values-zh-rCN/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@ this program. If not, see <http://www.gnu.org/licenses/>
<string name="cmd_edit">编辑</string>
<string name="ERR_ADD"><![CDATA["无法更新 %1$s :
%2$s"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["没有写入 %1$s %2$s 的权限。
(是否有 SD 卡,是否加载了 SD 卡?)"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["没有写入 %1$s %2$s 的权限。"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS_CHANGE_TO_DEFAULT"><![CDATA["没有写入当前 zip '%1$s' 的权限。
是否要改用默认的 '%2$s'? "]]></string>
<string name="WARN_ADD_NO_CHANGES"><![CDATA["文件已包含于
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/res/values-zh-rTW/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@ this program. If not, see <http://www.gnu.org/licenses/>
<string name="cmd_cancel">取消</string>
<string name="cmd_edit">編輯</string>
<string name="ERR_ADD">無法更新 %1$s :\n%2$s</string>
<string name="ERR_NO_WRITE_PERMISSIONS">沒有寫入 %1$s %2$s 的權限。
(是否有 Sd 卡,是否加載了 Sd 卡?)</string>
<string name="ERR_NO_WRITE_PERMISSIONS">沒有寫入 %1$s %2$s 的權限。</string>
<string name="ERR_NO_WRITE_PERMISSIONS_CHANGE_TO_DEFAULT">沒有寫入當前 zip \"%1$s\" 的權限。
是否要改用默認的 \"%2$s\"? </string>
<string name="WARN_ADD_NO_CHANGES">文件已包含於\n%1$s</string>
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/res/values-zz/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@ this program. If not, see <http://www.gnu.org/licenses/>

<string name="ERR_ADD"><![CDATA["ERR_ADD:Could not update %1$s :
%2$s"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["ERR_NO_WRITE_PERMISSIONS:No Permissions to write to %1$s %2$s.
(Is there sdcard-hardware and is the sdcard mounted?)"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS"><![CDATA["ERR_NO_WRITE_PERMISSIONS:No Permissions to write to %1$s %2$s."]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS_CHANGE_TO_DEFAULT"><![CDATA["ERR_NO_WRITE_PERMISSIONS_CHANGE_TO_DEFAULT:No Permissions to write to current zip '%1$s'.
Do you want to use default '%2$s' instead? "]]></string>
<string name="WARN_ADD_NO_CHANGES"><![CDATA["WARN_ADD_NO_CHANGES:Files are already included in
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@ this program. If not, see <http://www.gnu.org/licenses/>

<string name="ERR_ADD"><![CDATA["Could not update %1$s :
%2$s"]]></string>
<string name="ERR_NO_WRITE_PERMISSIONS">No Permissions to write to %1$s %2$s.
(Is there sdcard-hardware and is the sdcard mounted?)</string>
<string name="ERR_NO_WRITE_PERMISSIONS">No Permissions to write to %1$s %2$s.</string>
<string name="ERR_NO_WRITE_PERMISSIONS_CHANGE_TO_DEFAULT"><![CDATA["No Permissions to write to current zip '%1$s'.
Do you want to use default '%2$s' instead?"]]></string>
<string name="WARN_ADD_NO_CHANGES"><![CDATA["Files are already included in
Expand Down

0 comments on commit 7411c7a

Please sign in to comment.