安卓菜鸡 2019-12-03 09:57 采纳率: 0%
浏览 2237

android 华为10.0手机不能获取粘贴板内容

在华为10.0的手机上面 只有每次结束了进程在进入app才能获取一次粘贴板内容 其余都不能获取求大神帮忙jie'jue


```  ClipboardManager clipboard = (ClipboardManager) context.getSystemService(context.CLIPBOARD_SERVICE);
        //无数据时直接返回
        if (!clipboard.hasPrimaryClip()) {
            return;//在10.0手机上面直接就走了这里
        }

        //如果是文本信息
        if (clipboard.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) {
            ClipData cdText = clipboard.getPrimaryClip();
            ClipData.Item item = cdText.getItemAt(0);
            //此处是TEXT文本信息
            if (item.getText() != null && !item.getText().toString().equals("")) {
                str = item.getText().toString();
                if (Constants.isNumeric(str)){
                    if (str.length()==4||str.length()==11){
                        return;
                    }
                }else {
                    if (str.length()==6 && Constants.isEnglishNo(str)){
                        return;
                    }else {
                        //传给后台
                        IntelligenceSraech(str);
                    }
                }
            }
        }
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-29 04:35
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题可能是因为Android Studio中对ClipboardManager的使用方式与Android设备上的不同。在Android Studio中,你可以尝试以下方法来解决此问题:

    1. 修改代码: 在Intent.ACTION_VIEW事件处理函数中添加以下代码以请求访问系统剪贴板(getSystemClipboard()):

      Intent intent = new Intent(Intent.ACTION_GET_CONTENT, MediaStore.Files.FileColumns.CONTENT_URI);
      intent.addCategory(Intent.CATEGORY_OPENABLE);
      intent.setType("text/plain");
      startActivityForResult(intent, REQUEST_CODE_CLIPBOARD);
      
    2. 改变回调监听器: 你可以在onCreate()onResume()方法中设置一个监听器来检查是否有新的剪贴板内容。

    3. 使用第三方库: 如果上述方法无法解决问题,可以考虑使用第三方库如ClipboardManagerCompat来替代原始的ClipboardManager

    以下是示例代码如何使用ClipboardManagerCompat替换原始的ClipboardManager

    import androidx.appcompat.app.AppCompatActivity;
    
    import android.content.ClipData;
    import android.content.Intent;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
    
        Button btnCopy;
        EditText etPaste;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            btnCopy = findViewById(R.id.btn_copy);
            etPaste = findViewById(R.id.et_paste);
    
            btnCopy.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
                    ClipData clipData = clipboard.getPrimaryClip();
    
                    if (clipData == null || clipData.getItemCount() < 1) {
                        Toast.makeText(MainActivity.this, "没有粘贴板内容", Toast.LENGTH_SHORT).show();
                        return;
                    }
    
                    String content = clipData.getItemAt(0).getText().toString();
                    etPaste.setText(content);
                }
            });
        }
    }
    

    请注意,你需要将以上代码中的R.layout.activity_mainR.id.et_paste替换为你实际的应用视图布局文件和对应的ID。

    如果你的问题仍然存在,请提供更多的上下文或者代码片段,以便更准确地帮助你解决问题。

    评论

报告相同问题?