add foreground service permission / run download web pages in other process

This commit is contained in:
David Luhmer 2018-10-30 22:00:11 +01:00
parent da5d1f873b
commit 0ec6b16602
3 changed files with 29 additions and 17 deletions

View file

@ -3,8 +3,8 @@
xmlns:tools="http://schemas.android.com/tools"
package="de.luhmer.owncloudnewsreader"
android:installLocation="internalOnly"
android:versionCode="134"
android:versionName="0.9.9.19">
android:versionCode="135"
android:versionName="0.9.9.19.1">
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
@ -18,6 +18,7 @@
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<!-- <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" /> -->
<application
@ -46,15 +47,15 @@
<activity
android:name=".NewsDetailActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/title_activity_news_detail"></activity>
android:label="@string/title_activity_news_detail" />
<activity
android:name=".SettingsActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/title_activity_settings"></activity>
<activity android:name=".DownloadImagesActivity"></activity>
android:label="@string/title_activity_settings" />
<activity android:name=".DownloadImagesActivity" />
<activity
android:name=".SyncIntervalSelectorActivity"
android:label="@string/title_activity_sync_interval_selector"></activity>
android:label="@string/title_activity_sync_interval_selector" />
<activity
android:name=".NewFeedActivity"
android:label="@string/title_activity_new_feed"
@ -119,9 +120,6 @@
<service
android:name=".services.SyncItemStateService"
android:permission="android.permission.BIND_JOB_SERVICE" />
<service
android:name=".services.DownloadWebPageService"
android:permission="android.permission.BIND_JOB_SERVICE" />
<service
android:name=".services.OwnCloudAuthenticatorService"
android:exported="true">
@ -150,7 +148,7 @@
android:name=".providers.OwnCloudSyncProvider"
android:authorities="de.luhmer.owncloudnewsreader"
android:label="@string/auto_sync_string"
android:syncable="true"></provider>
android:syncable="true" />
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.provider"
@ -170,7 +168,13 @@
<!-- android:theme="@style/Theme.Transparent" > -->
<!-- </activity> -->
<receiver android:name=".helper.NotificationActionReceiver">
<service
android:name=".services.DownloadWebPageService"
android:permission="android.permission.BIND_JOB_SERVICE"
android:process=":downloadWebPageProcess"/>
<receiver
android:name=".helper.NotificationActionReceiver"
android:process=":downloadWebPageProcess">
<intent-filter>
<action android:name="YES_ACTION"/>
<action android:name="STOP_ACTION"/>

View file

@ -833,26 +833,30 @@ public class NewsReaderListActivity extends PodcastFragmentActivity implements
return true;
case R.id.menu_download_web_archive:
startDownloadWebPagesForOfflineReading();
checkAndStartDownloadWebPagesForOfflineReadingPermission();
return true;
}
return super.onOptionsItemSelected(item);
}
private void startDownloadWebPagesForOfflineReading() {
private void checkAndStartDownloadWebPagesForOfflineReadingPermission() {
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
checkSelfPermission(Manifest.permission.FOREGROUND_SERVICE) == PackageManager.PERMISSION_GRANTED) {
Log.v("Permission error","You have permission");
startDownloadWebPagesForOfflineReading();
} else {
Log.e("Permission error","Asking for permission");
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE_PERMISSION_DOWNLOAD_WEB_ARCHIVE);
requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.FOREGROUND_SERVICE}, REQUEST_CODE_PERMISSION_DOWNLOAD_WEB_ARCHIVE);
return;
}
}
else { //you dont need to worry about these stuff below api level 23
} else { //you dont need to worry about these stuff below api level 23
Log.v("Permission error","You already have the permission");
startDownloadWebPagesForOfflineReading();
}
}
private void startDownloadWebPagesForOfflineReading() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(new Intent(this, DownloadWebPageService.class));
} else {

View file

@ -106,6 +106,10 @@ public class PodcastPlaybackService extends Service {
mHandler.postDelayed(mUpdateTimeTask, 0);
// TODO: add
// startForeground(NOTIFICATION_ID, podcastNotification);
super.onCreate();
}