1
0
mirror of https://github.com/nerzhul/ownCloud-SMS-App.git synced 2025-06-07 07:56:14 +00:00

Add privacy policy inside application and repository

This should permit to prevent Google play removal due to this missing information.
This commit is contained in:
Loïc Blot 2019-01-16 16:56:43 +01:00
parent d88836e7d2
commit 77ab787db7
15 changed files with 245 additions and 64 deletions

20
PRIVACY_POLICY.md Normal file
View File

@ -0,0 +1,20 @@
# Overview
Nextcloud SMS is a free software developed by its contributors. This privacy policy
is intended to inform you about data gathered by this application."
Information we collect
Only SMS and call log are collected by the application.
Where information is sent.
Information is neither sent to Nextcloud team servers nor Nextcloud SMS team servers nor
any government nor another entity you don't want.
When you configure a Nextcloud account in the application, you agree with the Nextcloud
instance owner that your SMS and call log data will be stored in his infrastructure
under his responsibility.
We don't recommend to use a public or a company Nextcloud instance account. Your privacy
must be under your control on your own Nextcloud instance.

View File

@ -1,43 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="fr.unix_experience.owncloud_sms"
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- From Android 4.1 to O -->
<uses-sdk android:maxSdkVersion="26"/>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="fr.unix_experience.owncloud_sms"> <!-- From Android 4.1 to O -->
<uses-sdk android:maxSdkVersion="26" />
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<!-- For SMS Restore & Sending -->
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.SEND_SMS" />
<!-- For SMS Broadcaster -->
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- For syncer -->
<uses-permission android:name="android.permission.READ_SYNC_STATS"/>
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.READ_SYNC_STATS" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!-- For account management -->
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"/>
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<!-- For backup restauration -->
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/OcSmsTheme">
<!-- Related to periodic sync -->
@ -46,55 +46,59 @@
android:exported="true"
android:process=":sync">
<intent-filter>
<action android:name="android.content.SyncAdapter"/>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/sync_adapter"/>
android:resource="@xml/sync_adapter" />
</service>
<provider
android:name=".providers.SmsDataProvider"
android:authorities="@string/account_authority"
android:label="@string/pref_title_sync">
</provider>
android:label="@string/pref_title_sync"></provider>
<!-- Related to Login -->
<service android:name=".authenticators.OwnCloudAuthenticatorService">
<intent-filter>
<action android:name="android.accounts.AccountAuthenticator"/>
<action android:name="android.accounts.AccountAuthenticator" />
</intent-filter>
<meta-data
android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/owncloud_account_authenticator"/>
android:resource="@xml/owncloud_account_authenticator" />
</service>
<receiver android:name=".broadcast_receivers.IncomingSms"
android:permission="android.permission.BROADCAST_SMS">
<receiver
android:name=".broadcast_receivers.IncomingSms"
android:permission="android.permission.BROADCAST_SMS">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
<action android:name="android.provider.Telephony.SMS_DELIVER" />
</intent-filter>
</receiver>
<!-- BroadcastReceiver that listens for incoming MMS messages. Note: useless class, used only for restoring SMS -->
<receiver android:name=".misc.MmsReceiver"
android:permission="android.permission.BROADCAST_WAP_PUSH">
<receiver
android:name=".misc.MmsReceiver"
android:permission="android.permission.BROADCAST_WAP_PUSH">
<intent-filter>
<action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />
<data android:mimeType="application/vnd.wap.mms-message" />
</intent-filter>
</receiver>
<!-- Activity that allows the user to send new SMS/MMS messages Note: useless class, used only for restoring SMS -->
<activity android:name=".misc.ComposeSmsActivity" >
<activity android:name=".misc.ComposeSmsActivity">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<action android:name="android.intent.action.SENDTO" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="sms" />
<data android:scheme="smsto" />
<data android:scheme="mms" />
@ -103,12 +107,15 @@
</activity>
<!-- Service that delivers messages from the phone "quick response" Note: useless class, used only for restoring SMS -->
<service android:name=".misc.HeadlessSmsSendService"
android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE"
android:exported="true" >
<service
android:name=".misc.HeadlessSmsSendService"
android:exported="true"
android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE">
<intent-filter>
<action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="sms" />
<data android:scheme="smsto" />
<data android:scheme="mms" />
@ -118,45 +125,43 @@
<receiver android:name=".broadcast_receivers.ConnectivityChanged">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
<activity
android:name=".activities.LoginActivity"
android:label="@string/title_activity_login"
android:theme="@style/OcSmsTheme.Login">
</activity>
android:theme="@style/OcSmsTheme.Login"></activity>
<activity
android:name=".activities.remote_account.AccountListActivity"
android:label="@string/title_activity_select_account">
</activity>
android:label="@string/title_activity_select_account"></activity>
<activity
android:name=".activities.OCSMSSettingsActivity"
android:label="@string/title_activity_general_settings">
</activity>
android:label="@string/title_activity_general_settings"></activity>
<activity
android:name=".activities.MainActivity"
android:label="@string/app_name"
android:theme="@style/OcSmsTheme.Drawer">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activities.remote_account.ContactListActivity"
android:label="@string/title_activity_select_contact">
</activity>
android:label="@string/title_activity_select_contact"></activity>
<activity
android:name=".activities.remote_account.AccountActionsActivity"
android:label="@string/account_actions">
</activity>
android:label="@string/account_actions"></activity>
<activity
android:name=".activities.remote_account.RestoreMessagesActivity"
android:label="@string/restore_all_messages">
</activity>
android:label="@string/restore_all_messages"></activity>
<activity
android:name=".activities.PrivacyPolicyActivity"
android:label="@string/action_appinfo_privacy_policy"
android:theme="@style/OcSmsTheme.NoActionBar"></activity>
</application>
</manifest>
</manifest>

View File

@ -73,8 +73,10 @@ public class MainActivity extends AppCompatActivity
setContentView(R.layout.activity_main);
setupToolbar();
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
if (getSupportActionBar() != null) {
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
drawer = findViewById(R.id.drawer_layout);
setupDrawer();
@ -153,7 +155,7 @@ public class MainActivity extends AppCompatActivity
}
@Override
public boolean onNavigationItemSelected(MenuItem item) {
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
boolean res = true;
@ -176,6 +178,11 @@ public class MainActivity extends AppCompatActivity
case R.id.nav_appinfo_perms:
res = openAppInfos();
break;
case R.id.nav_appinfo_privacy_policy:
res = openPrivacyPolicy();
break;
default:
Log.e(TAG, "Unhandled navigation item " + Integer.toString(id));
}
closeDrawer();
return res;
@ -218,7 +225,7 @@ public class MainActivity extends AppCompatActivity
Intent intent;
try {
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + getPackageName()));
} catch (android.content.ActivityNotFoundException anfe) {
} catch (android.content.ActivityNotFoundException e) {
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + getPackageName()));
}
@ -235,6 +242,11 @@ public class MainActivity extends AppCompatActivity
return true;
}
private boolean openPrivacyPolicy() {
startActivity(new Intent(this, PrivacyPolicyActivity.class));
return true;
}
/*
* Permissions
*/

View File

@ -0,0 +1,21 @@
package fr.unix_experience.owncloud_sms.activities;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import fr.unix_experience.owncloud_sms.R;
public class PrivacyPolicyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_privacy_policy);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
}

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".activities.PrivacyPolicyActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="@dimen/app_bar_height"
android:fitsSystemWindows="true"
android:theme="@style/OcSmsTheme.AppBarOverlay">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/toolbar_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:toolbarId="@+id/toolbar">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/OcSmsTheme.PopupOverlay" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_privacy_policy" />
</android.support.design.widget.CoordinatorLayout>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".activities.PrivacyPolicyActivity"
tools:showIn="@layout/activity_privacy_policy">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/text_margin"
android:text="@string/privacy_policy_large_text" />
</android.support.v4.widget.NestedScrollView>

View File

@ -22,6 +22,10 @@
android:id="@+id/nav_appinfo_perms"
android:icon="@drawable/ic_information"
android:title="@string/action_appinfo_perms"/>
<item
android:id="@+id/nav_appinfo_privacy_policy"
android:icon="@drawable/ic_information"
android:title="@string/action_appinfo_privacy_policy"/>
</group>
<item android:title="@string/communicate">

View File

@ -0,0 +1,10 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="fr.unix_experience.owncloud_sms.activities.PrivacyPolicyActivity">
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never" />
</menu>

View File

@ -185,4 +185,5 @@
<string name="sync_complete">Synchronisation complete</string>
<string name="err_sync_http_write_failed">Error #19: Failed to write HTTP stream when pushing data to server.</string>
<string name="err_sync_http_request_protocol_exception">Error #20: Failed to properly set HTTP protocol version.</string>
<string name="action_appinfo_privacy_policy">Privacy policy</string>
</resources>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="action_appinfo_privacy_policy">Privacy policy</string>
</resources>

View File

@ -185,4 +185,5 @@
<string name="sync_complete">Sincronización completa</string>
<string name="err_sync_http_write_failed">Error #19: Falla al escribir al flujo HTTP al enviar datos al servidor. </string>
<string name="err_sync_http_request_protocol_exception">Error #20: Falla al establecer correctamente la versión del protocolo HTTP.</string>
<string name="action_appinfo_privacy_policy">Privacy policy</string>
</resources>

View File

@ -185,4 +185,29 @@
<string name="sync_complete">Synchronisation terminée</string>
<string name="err_sync_http_write_failed">Erreur #19: Echec de l\'écriture du flux HTTP lors de l\'envoi de données au serveur.</string>
<string name="err_sync_http_request_protocol_exception">Erreur #20: Impossible de définir correctement la version du protocole HTTP.</string>
<string name="action_appinfo_privacy_policy">Politique de confidentialité</string>
<string name="privacy_policy_large_text">
"Généralités\n\n"
"Nextcloud SMS est un logiciel libre développé par ses contributeurs. Cette politque de "
"confidentialité vous informe du traîtement appliqué aux données collectées par cette "
"application.\n\n"
"Les informations que nous récupérons\n\n"
"Nous récupérons uniquement les SMS et le journal d'appel.\n\n"
"Où sont envoyées mes données.\n\n"
"Les données ne sont ni envoyées à l'équipe en charge de Nextcloud, ni à l'équipe en "
"charge de Nextcloud SMS ni à aucun gouvernement ou aucune entité auquel vous ne souhaitez "
"pas les donner.\n\n"
"Lorsque vous configurez un compte Nextcloud sur l'application, vous acceptez "
"implicitement que vos SMS et votre journal d'appel soit stocké sur l'infrastructure du "
"propriétaire de l'instance Nextcloud et sous sa responsabilité.\n\n"
"Nous ne vous recommandons pas d'utiliser un compte sur instance publique ou d'entreprise. "
"Votre vie privée doit être sous votre contrôle sur votre propre instance Nextcloud.\n\n"
</string>
</resources>

View File

@ -9,5 +9,7 @@
<dimen name="standard_half_padding">8dp</dimen>
<dimen name="nav_header_height">140dp</dimen>
<dimen name="fab_margin">16dp</dimen>
<dimen name="app_bar_height">180dp</dimen>
<dimen name="text_margin">16dp</dimen>
</resources>

View File

@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
<?xml version="1.0" encoding="utf-8"?><!--
/*
* Copyright (c) 2014-2015, Loic Blot <loic.blot@unix-experience.fr>
* All rights reserved.
@ -25,9 +24,7 @@
* SUCH DAMAGE.
*/
-->
<resources
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="MissingTranslation">
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
<!-- Translation version, reference for translators -->
<string name="translation_version">7</string>
@ -274,4 +271,28 @@
<string name="sync_complete">Synchronization complete</string>
<string name="err_sync_http_write_failed">Error #19: Failed to write HTTP stream when pushing data to server.</string>
<string name="err_sync_http_request_protocol_exception">Error #20: Failed to properly set HTTP protocol version.</string>
<string name="action_appinfo_privacy_policy">Privacy policy</string>
<string name="privacy_policy_large_text">
"Overview\n\n"
"Nextcloud SMS is a free software developed by its contributors. This privacy policy "
"is intended to inform you about data gathered by this application."
"Information we collect\n\n"
"Only SMS and call log are collected by the application.\n\n"
"Where information is sent.\n\n"
"Information is neither sent to Nextcloud team servers nor Nextcloud SMS team servers nor "
"any government nor another entity you don't want.\n\n"
"When you configure a Nextcloud account in the application, you agree with the Nextcloud "
"instance owner that your SMS and call log data will be stored in his infrastructure "
"under his responsibility.\n\n"
"We don't recommend to use a public or a company Nextcloud instance account. Your privacy "
"must be under your control on your own Nextcloud instance.\n\n"
</string>
</resources>

View File

@ -81,8 +81,8 @@
<item name="windowNoTitle">true</item>
</style>
<style name="OcSmsTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"/>
<style name="OcSmsTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="OcSmsTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/>
<style name="OcSmsTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
</resources>