我正在尝试从我的应用程序在Android上共享一个简单的PDF文件。我知道从Android 7的API已经改变了,所以我试图实现我自己的FileProvider。
这是我的AndroidManifest.xml
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="it.semibyte.androidtest.provider"
android:exported="false"
android:grantUriPermissions="true">
<!-- ressource file to create -->
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths">
</meta-data>
</provider>
这是res/xml下的file_paths. xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="." />
</paths>
这是我的java文件
package it.semibyte.utils;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import androidx.core.content.FileProvider;
import java.io.File;
import org.qtproject.qt5.android.QtNative;
public class ShareUtils
{
public static boolean share(Context context, String filepath)
{
if(QtNative.activity() == null)
return false;
File file = new File(filepath);
if(!file.exists())
return false;
Uri uri = FileProvider.getUriForFile(context, "it.semibyte.provider", file);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT, "Share file");
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.setType("application/pdf");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
// Verify that the intent will resolve to an activity
if(sendIntent.resolveActivity(QtNative.activity().getPackageManager()) == null)
return false;
QtNative.activity().startActivity(intent);
return true;
}
}
我还创建了一个gradle.properties文件,看起来像这样(它与qt生成的默认gradle.properies合并):
android.useAndroidX=true
android.enableJetifier=true
当我尝试编译它给我这个错误:
ShareUtils.java:7: error: package androidx.core.content does not exist
import androidx.core.content.FileProvider;
有什么建议吗?谢谢你
3条答案
按热度按时间bvuwiixz1#
要在Qt应用程序中启用AndroidX,我们需要:
1.添加
Gradle_OPTS="-Dorg.gradle.project.android.useAndroidX=true -Dorg.gradle.project.android. enableJetier =true”
到'DEFAULT_JVM_OPTS=""'行下面的android/gradlew
1.添加
实现'androidx.appcompat:appcompat:1.1.0'
在android/build.gradle的'dependencies'部分
(more detail)
dtcbnfnu2#
将此添加到您的构建中。gradle
allprojects { repositories { google() } }
v2g6jxz63#
详细使用这篇StackOverflow文章。
对于您的问题,您必须将以下块添加到build.gradle文件中:
以及gradle.properties文件必须包含以下代码: