相关疑难解决方法(0)

有时间延迟重复一项任务?

我的代码中有一个变量,说它是"状态".

我想根据此变量值在应用程序中显示一些文本.这必须在特定的时间延迟下完成.

就像是,

  • 检查状态变量值

  • 显示一些文字

  • 等待10秒钟

  • 检查状态变量值

  • 显示一些文字

  • 等待15秒

等等.时间延迟可能会有所不同,一旦显示文本就会设置.

我试过Thread.sleep(time delay)但失败了.有没有更好的方法来完成这项工作?

android android-thread

202
推荐指数
7
解决办法
16万
查看次数

如何在 Android Q (Android 10) 上直接将文件下载到下载目录

假设我正在开发一个聊天应用程序,它能够与其他人共享任何类型的文件(没有 mimetype 限制):比如图像、视频、文档,还有压缩文件,比如 zip、rar、apk 甚至不太常见的文件类型例如photoshop或autocad文件。

在 Android 9 或更低版本中,我直接将这些文件下载到下载目录,但在 Android 10 中,如果不向用户显示 Intent 以询问从何处下载它们,这是不可能的...

不可能的?但是为什么 Google Chrome 或其他浏览器能够做到这一点?事实上,他们仍然将文件下载到下载目录,而无需在 Android 10 中询问用户。

我首先分析了 Whatsapp 以了解他们如何实现它,但他们利用了 AndroidManifest 上的 requestLegacyExternalStorage 属性。但后来我分析了 Chrome,它的目标是 Android 10,而不使用 requestLegacyExternalStorage。这怎么可能?

几天来我一直在谷歌上搜索应用程序如何将文件直接下载到 Android 10 (Q) 上的下载目录,而无需询问用户将文件放在哪里,就像 Chrome 一样。

我已经阅读了 android 开发人员文档、关于 Stackoverflow 的很多问题、互联网上的博客文章和 Google Groups,但我仍然没有找到一种方法来保持与 Android 9 完全相同的方式,甚至没有一个让我满意的解决方案。

到目前为止我尝试过的:

  • 使用 ACTION_CREATE_DOCUMENT 意图打开 SAF 以请求许可,但显然无法静默打开它。一个 Activity 总是被打开以询问用户将文件放在哪里。但是我应该在每个文件上打开这个 Intent 吗?我的应用程序可以在后台自动下载聊天文件。不是可行的解决方案。

  • 在应用程序开头使用 SAF 获取授权访问权限,URI 指向下载内容的任何目录:

        StorageManager sm = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);
        i = sm.getPrimaryStorageVolume().createOpenDocumentTreeIntent();
    
    Run Code Online (Sandbox Code Playgroud)

    请求用户许可是多么丑陋的活动,不是吗?即使这不是谷歌浏览器所做的。

  • 或者再次使用 ACTION_CREATE_DOCUMENT,保存我在 onActivityResult() 中获得的 Uri 并使用 …

android google-chrome android-10.0

35
推荐指数
2
解决办法
2万
查看次数

FileObserver不适用于Android 6.0 Marshmallow(API 23)中的外部存储

我有一个应用程序,用于观察外部存储上的公共目录FileObserver.它在Lollipop设备上运行良好.我想添加支持Marshmallow,所以我用它设置了一个Nexus 9平板电脑.

在Marshmallow设备上,它失败了,在Lollipop设备上它没关系.在Marshmallow设备上,FileObserver它不会对由其他进程引起的文件系统事件做出反应.例如,截取屏幕截图,通过adbshell 创建文件.如果文件是由我的应用程序创建的,它可以正常工作.

Marshmallow,我要求WRITE_EXTERNAL_STORAGEREAD_EXTERNAL_STORAGE权限Manifest.xml.

当我用API 23编译时,我也确保我打电话ActivityCompat.requestPermissions().

当我用API 22编译时,我只是依靠Manifest.xml.

如果我观察它的话,它会起作用/data/data/my-package-name.

如果我观察到它,它就会失败/storage/emulated/0/Pictures/Screenshots.

是否有人测试FileObserver了以下所有内容?:

  • Marshmallow 设备
  • API 23和API 22?
  • 外部存储
  • 由观察应用程序之外的其他进程创建的文件(例如adb或截屏).

java android adb fileobserver android-6.0-marshmallow

31
推荐指数
1
解决办法
3478
查看次数

使用DownloadManager时,ListView中的Android ProgressBar

我有一个ListView,其中每个项目代表一个PDF文件.当用户单击某个项目时,该应用程序必须在外部存储上下载该文件.现在下载无法正常运行,但这不是问题.我想要一个ProgressBar,旋转轮样式,在下载文件时出现在列表的每个项目旁边.

我的问题是:我找不到如何使纺车出现.在下载管理器之前,我尝试使用AsyncTask并且旋转轮工作.

这是我的代码:

CategoryActivity.java(ListView的活动)

@Override
public void onItemClick(AdapterView<?> parent, View view,
    int position, long id) {
    // Récupère les valeurs depuis ListItem
    udl = ((TextView) view.findViewById(R.id.udl)).getText().toString();
    // This is the spinning wheel
    loader = ((ProgressBar) view.findViewById(R.id.spinWheel2));

    filepath = dirpath + udl + ".pdf";
    File file = new File(filepath);
    if (file.exists()) {

        // If the file exists, I open it

    }else{ // Else I download it
        // Setting the spinning wheel to VISIBLE
        loader.setVisibility(View.VISIBLE);

        SharedPreferences codeSaveUrl = getSharedPreferences(PREFS_TEXT,Context.MODE_PRIVATE);
        url2 = codeSaveUrl.getString("defaut", …
Run Code Online (Sandbox Code Playgroud)

android download-manager android-listview android-progressbar android-download-manager

7
推荐指数
1
解决办法
4267
查看次数

将 ProgressBar 与 DownloadManager 结合使用

在我的应用程序中,我用来DownloadManager从 Firebase 下载文件。

import static android.os.Environment.DIRECTORY_DOWNLOADS;

public class Physics extends AppCompatActivity {
PDFView pdfView;
FirebaseStorage firebaseStorage;
StorageReference storageReference;
StorageReference ref;
File file;
File files;
ProgressBar progressBar;
private Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
    setContentView(R.layout.activity_physics1);

    pdfView = findViewById(R.id.pdfview);
    progressBar = (ProgressBar) findViewById(R.id.progressBar);


    Context mContext = getApplicationContext();
    String path = mContext.getFilesDir().getAbsolutePath() + "/storage/emulated/0/Android/data/com.impwala.impwala/files/Download/asd.nomedia";
    File file = new File("/storage/emulated/0/Android/data/com.impwala.impwala/files/Download/asd.nomedia");

    if (file.exists()) {
        files = new File("/storage/emulated/0/Android/data/com.impwala.impwala/files/Download/asd.nomedia");
        pdfView.fromFile(files).load();
    } else {
        if (haveNetwork()) {
            download();
        } else …
Run Code Online (Sandbox Code Playgroud)

android android-download-manager firebase-storage

6
推荐指数
1
解决办法
6445
查看次数

使用下载管理器下载时显示进度条

我正在使用下载管理器 api 下载大文件,我也实现了它。但问题是,下载进度的通知显示在状态栏中。但我想使用进度条在活动中显示通知。有没有人做过,如果有请帮帮我。

public class DownloadManagerActivity extends Activity {
private long enqueue;
private DownloadManager dm;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {
                long downloadId = intent.getLongExtra(
                        DownloadManager.EXTRA_DOWNLOAD_ID, 0);
                Query query = new Query();
                query.setFilterById(enqueue);
                Cursor c = dm.query(query);
                if (c.moveToFirst()) {
                    int columnIndex = c
                            .getColumnIndex(DownloadManager.COLUMN_STATUS);
                    if (DownloadManager.STATUS_SUCCESSFUL == …
Run Code Online (Sandbox Code Playgroud)

java android download download-manager android-download-manager

5
推荐指数
1
解决办法
1万
查看次数