2016-09-15 22 views
0

Bitmojiキーボードを使用したことがある人は、使用するアプリケーションに応じてBitmojiを共有することができます。通常の共有の意図がないメッセンジャーまたはSMSで、共有するアプリケーションを選択します。私がiOS向けに開発しているように、これは本当に最初のAndroidプロジェクトです。 iOSでは、クリップボード(ペーストボード)に画像をコピーして、どこにでも貼り付けることができます。ユーザーが現在入力しているアプリケーションを特定するにはどうすればよいですか?

今、私はAndroid IMEを開発しており、ユーザーが現在入力しているアプリケーションを知る方法を知る必要があります。

誰かが私の方向を指すことができますか?私は先週、Androidの開発について多くのことを学びました。特に、ContentProviderで、ドキュメントの多くを読んで、Android SMSアプリケーションに正しく画像を共有しているような気がします。

答えて

0

を誰かが解決策を必要としている場合には、私はこの質問への答えを投稿したかったです。その後、ユーザーがそれはあなたが意図を処理する持っているもののアプリケーションを参照するためにあなたの意思活動を照会する必要が

EditorInfo editorInfo = getCurrentInputEditorInfo(); 
String inputConnectionPackageName = editorInfo.packageName; 

を:まず、あなたが使用して現在のInputConnetionののpackageNameを取得するためにInputMethodのEditorInfoクラスを使用する必要があります送信しようとしています。使い方:

PackageManager pManager = getPackageManager(); 
    List<ResolveInfo> mApps = new ArrayList<ResolveInfo>(); 
    mApps = pManager.queryIntentActivities(intent, 
      PackageManager.COMPONENT_ENABLED_STATE_ENABLED); 

を次にあなたが行う必要がありますすべてがループのために作成して比較です:

for (int i = 0; i < mApps.size()-1; i++) { 
     ResolveInfo info = mApps.get(i); 

     if (info.activityInfo.packageName.equalsIgnoreCase(editorInfo.packageName)) { 
      intent.setPackage(info.activityInfo.packageName); 
      //send out the intent 
      startActivity(intent); 
     } 
    } 
0

パッケージ名を取得するには、以下のコードを試してみてください。

ActivityManager mActivityManager = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE); 
if(Build.VERSION.SDK_INT > 20){ 
    String mPackageName = mActivityManager.getRunningAppProcesses().get(0).processName; 
} 
else{ 
    String mPackageName = mActivityManager.getRunningTasks(1).get(0).topActivity.getPackageName(); 
} 
+0

私が活動し、パッケージマネージャで遊ぶでしたが、私は彼らから情報を得ていませんデバッガの自分のIMEサービスに関する情報を除いて.....これはセキュリティ上の立場から私には意味があり、アプリケーションをサンドボックス化したままにしておきます。どのアプリケーションが使用されていても、どのようにデータをプッシュまたは共有するのか分かりません。 SMSを使用している場合は、SMSアプリケーションと画像を共有します。Gmailを使用している場合は、Gmailなどで共有します。 SMSアプリケーションへの共有。 –

+0

この[POST](http://stackoverflow.com/questions/6827407/how-to-customize-share-intent-in-android/9229654#9229654)のおかげで、私はアプリケーションのリストを手に入れることができました。今すぐリストから正しいアプリケーションを見つける方法を考える必要があります –

関連する問題