2017-01-05 7 views
0

コードでは、うまく動作しますが、トーストの下で使用を共有する意図が共有するために使用意図を(使用するapp.Pleaseヘルプをクラッシュトーストを特定のパッケージ用にコピーされたテキスト)をコピーしたテキストと完全に一致させます。意図は、それがクリップボードサービスで使用したアプリがクラッシュ - アンドロイド

public class Clipboard extends Service { 
    private ClipboardManager mCM; 
    IBinder mBinder; 
    int mStartMode; 
    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     mCM = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
     mCM.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() { 
      @Override 
      public void onPrimaryClipChanged() { 
      String newClip = mCM.getText().toString(); 

      Toast.makeText(getApplicationContext(), newClip.toString(), Toast.LENGTH_LONG).show(); 
      Log.i("LOG", newClip.toString() + ""); 
      //intent starts ,this crashes the app 
      Intent sendIntent = new Intent(Intent.ACTION_SEND); 
      sendIntent.setType("text/plain"); 
      sendIntent.setClassName("com.package","com.package.activity"); 
      sendIntent.putExtra(Intent.EXTRA_TEXT, newClip.toString()); 
      startActivity(sendIntent); 
      } 
     }); 
     return mStartMode; 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     // TODO Auto-generated method stub 
     return null; 
    } 
} 

MainActivity:

public class MainActivity extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    startService(new Intent(this, Clipboard.class)); 
}} 
+1

LogCatではどのような例外がありますか? – rekire

答えて

0

私はこの行をコードに追加するべきだと思います。

public class Clipboard extends Service { 
private ClipboardManager mCM; 
IBinder mBinder; 
int mStartMode; 
@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    mCM = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
    mCM.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() { 

     @Override 
     public void onPrimaryClipChanged() { 
      String newClip = mCM.getText().toString(); 

      Toast.makeText(getApplicationContext(), newClip.toString(), Toast.LENGTH_LONG).show(); 
      Log.i("LOG", newClip.toString() + ""); 
//intent starts ,this crashes the app 
      Intent sendIntent = new Intent(Intent.ACTION_SEND); 
      sendIntent.setType("text/plain"); 
      sendIntent.setClassName("com.package","com.package.activity"); 
      sendIntent.putExtra(Intent.EXTRA_TEXT, newClip.toString()); 

**//this flag is missing i think** 

      sendIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

      startActivity(sendIntent); 

       } 
      }); 
      return mStartMode; 
     } 


    @Override 
    public IBinder onBind(Intent intent) { 
     // TODO Auto-generated method stub 
     return null; 
    }} 
+0

その旗は何ですか – Sarath

+0

それは完全に働いた。 – Sarath

+0

しかし、インテントは問題を何度も開いてしまうのですか? – Sarath

0

私はこの問題は、それをコメントしたり、適切なアクティビティ名を与えること

sendIntent.setClassName("com.package","com.package.activity"); 

てみてください下の行にあると思い、与えられた活動を登録することを忘れないでくださいマニフェストの名前を入力してコードを実行します。

これがあなたを手伝ってくれることを願っています!

+0

パッケージは問題ではありません私はそれらを試しました – Sarath

関連する問題