Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android剪贴板管理器循环?_Android_Clipboard - Fatal编程技术网

Android剪贴板管理器循环?

Android剪贴板管理器循环?,android,clipboard,Android,Clipboard,我正在为我的手机开发个人剪贴板应用程序(因为我可以:p),如果剪贴板上没有任何内容,我的应用程序就会崩溃。我添加了一个开关/案例,以查看它是否能够克服这一点,但事实并非如此。我想让我的程序在后台运行,让它在每次复制到剪贴板时显示toast消息。现在,我已经尝试将while循环与if语句一起使用,但仍然没有成功。这就是我目前所拥有的 编辑;修复了崩溃问题,我将剪贴板服务放在switch/case语句中,我的问题是每次复制文本时都会显示toast消息 package com.example.copy

我正在为我的手机开发个人剪贴板应用程序(因为我可以:p),如果剪贴板上没有任何内容,我的应用程序就会崩溃。我添加了一个开关/案例,以查看它是否能够克服这一点,但事实并非如此。我想让我的程序在后台运行,让它在每次复制到剪贴板时显示toast消息。现在,我已经尝试将while循环与if语句一起使用,但仍然没有成功。这就是我目前所拥有的

编辑;修复了崩溃问题,我将剪贴板服务放在switch/case语句中,我的问题是每次复制文本时都会显示toast消息

package com.example.copytoclipboard;

import android.R;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Toast;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;


@SuppressLint("NewApi")
public class MainActivity extends Activity {


    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_item);

        Intent startMain = new Intent(Intent.ACTION_MAIN);
        startMain.addCategory(Intent.CATEGORY_HOME);
        startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(startMain);


        switch(R.id.copy){
        case R.id.copy:
            ClipboardManager clipboard = 
            (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
            ClipData abc = clipboard.getPrimaryClip();
            ClipData.Item item = abc.getItemAt(0);
            String text = item.getText().toString();

            Context context = getApplicationContext();
            int duration = Toast.LENGTH_SHORT;

            Toast toast = Toast.makeText(context, text, duration);
            toast.show();
            break;
        }
        }

      }

“和我的应用程序崩溃”--使用LogCat检查与您的崩溃相关的Java堆栈跟踪。Commonware,我找到了它崩溃的原因,更新了我的代码。为了让您的应用程序知道剪贴板数据何时更改,您需要实现ClipboardManager的OnPrimaryClipChangedListener接口。如果你想让你的应用程序一直在后台运行,你需要创建一个服务。忘记更新我的SO,但我把它弄糊涂了,并添加了primaryclipchanged侦听器。