IntelliJ IDEAã®ãã©ã°ã€ã³ãéçºããæ¹æ³ã«é¢ããæ å ±ãšè©³çŽ°ãªèª¬æãèŠã€ããããšã¯åé¡ã§ã¯ãªããããèšäºã®æåŸã§ããã®ãããã¯ã«ããã€ãã®æ®µèœãåœãŠãŠãééããæ©èœã瀺ããŸãã ä»ãç§ã®ä»äºã®çµæã説æããããšæããŸãã
ãã®ããã Android Intent Senderã¯æ¬¡ã®adbã·ã§ã«ã³ãã³ãã«é¢é£ä»ããããŠããŸãã
- ãããŒããã£ã¹ã-ã³ãã³ãã䜿çšãããšããããŒããã£ã¹ãã¡ãã»ãŒãžãã¯ã©ã€ã¢ã³ãã«éä¿¡ã§ããŸãã
- StartActivity-èµ·åã¢ã¯ãã£ããã£
- StartService-ãµãŒãã¹ãéå§ããŸã
ãããã®ã³ãã³ããéä¿¡ãããšãã«ãå¿ èŠãªãã¹ãŠã®ãã©ã¡ãŒã¿ãŒïŒã¢ã¯ã·ã§ã³ãããŒã¿ãã«ããŽãªãã³ã³ããŒãã³ããMIMEã¿ã€ãããã©ã°ïŒããã³è¿œå ããŒã¿ãåããã€ã³ãã³ããæ·»ä»ã§ããŸãã
ãã©ã°ã€ã³ã®å€èŠ³ããå¿ èŠãªUIèŠçŽ ãåããåå¥ã®äœæ¥ãŠã£ã³ããŠãšããŠèšèšããããšã決å®ãããŸããã ãã©ã°ã€ã³ãžã®ã¢ã¯ã»ã¹ã¯ã[衚瀺]-> [ããŒã«ãŠã£ã³ããŠ]ã¡ãã¥ãŒãç»é¢ã®å·Šäžã®ã¢ã€ã³ã³ãããã³å³ããã«ããå®è¡ããŸãã
ãã©ã°ã€ã³ãŠã£ã³ããŠã¯ãããã€ã¹/ãšãã¥ã¬ãŒã¿ãŒéžæãŠã£ã³ããŠãã€ã³ãã³ããã©ã¡ãŒã¿ãŒã»ã¯ã·ã§ã³ãã³ãã³ãéä¿¡çšã®ãã¿ã³ã®ã¡ã€ã³ã»ã¯ã·ã§ã³ã«åãããŠããŸãã ãã©ã°ã€ã³ã¯ãããã€ã¹ãæ¥ç¶ããã³åæããããšãã«ããã€ã¹ã®èªåæŽæ°ãå®è£ ããŸãã ã€ã³ãã³ããã©ã¡ãŒã¿ã»ã¯ã·ã§ã³ã«ã¯ãå ¥åãã£ãŒã«ãã«å ããŠãå±¥æŽãã¿ã³ïŒã»ã¯ã·ã§ã³ã¿ã€ãã«ã®å³åŽïŒãã³ã³ããŒãã³ãå ¥åãã£ãŒã«ãã®é£ã«ããçŸåšã®ãããžã§ã¯ãã®ã¯ã©ã¹ããã«ãŒããã©ã°ããã«ãŒãè¿œå ã®ããŒã¿è¿œå ãã¿ã³ããããŸãã
çŸåšã®ãããžã§ã¯ãã®ã¯ã©ã¹ããã«ãŒã«ãããã³ã³ããŒãã³ãïŒèµ·åãããã¢ã¯ãã£ããã£ãªã©ïŒã®éžæãå€§å¹ ã«ç°¡çŽ åãããŸãã ãã¿ã³ãã¯ãªãã¯ãããšããããžã§ã¯ãã¯ã©ã¹ãå«ããŠã£ã³ããŠãéããæ€çŽ¢ããŠãããžã§ã¯ãããªãŒã«åãæ¿ããããšãã§ããŸãã ã¯ã©ã¹ãéžæãããšãããã±ãŒãžã®å¢çç·ã«å¿ èŠãªã/ãã»ãã¬ãŒã¿ãé©åãªå Žæã«èªåçã«çœ®ãæããããŸãïŒããšãã°ãcom.weezlabs.blabla / .MainActivityïŒã
ãã©ã°ããã«ãŒã䜿çšãããšãã€ã³ãã³ãã«è¿œå ãã1ã€ä»¥äžã®ãã©ã°ãéžæã§ããŸãã
ããã€ã¹ã«ã³ãã³ããéä¿¡ããã«ã¯ã ã ãããŒããã£ã¹ããéä¿¡ããã¿ã³ã ãã¢ã¯ãã£ããã£ãéå§ ããã¿ã³ã ããµãŒãã¹ã éå§ ããã¿ã³ã䜿çšããŸãã
äžè¬çãªå Žåã«adbãä»ããŠã¢ã¯ãã£ããã£ãšãµãŒãã¹ãéå§ããã«ã¯ããã®ã³ã³ããŒãã³ãã®ãããã§ã¹ãã«
android:exported=âtrueâ
ãã©ã°ã
android:exported=âtrueâ
å¿ èŠããããŸã
android:exported=âtrueâ
ã ãã ããå€æããããã«ããšã¯ã¹ããŒãããããã©ã°ãfalseã«èšå®ãããŠããã³ã³ããŒãã³ããå®è¡ã§ãããœãªã¥ãŒã·ã§ã³ããããŸãã ãããè¡ãããã«ã ããŠãŒã¶ãŒã®è¿œå ããã£ãŒã«ãããã©ã°ã€ã³ã«è¿œå ãããŸãããã®ãã£ãŒã«ãã«ã¯ãããã«ãŒããã³ã³ããŒãã³ããéžæããããšãããã±ãŒãžIDãèªåçã«çœ®ãæããããŸãã æ®å¿µãªãããäžéšã®ããã€ã¹ã§ã¯ãã®æ©èœãåäœããªãå ŽåããããŸãïŒããã¯Samsungã®ã»ãšãã©ã®ããã€ã¹ã«åœãŠã¯ãŸãããã§ãïŒã
ãã©ã°ã€ã³ã®å¯èœãªçšéã®ããã€ããæ€èšããŠãã ããã
- æŸéåä¿¡æ©ã®ãã¹ãããã§ã¯ãã¹ãŠãç°¡åã§ããå¿ èŠãªãã©ã¡ãŒã¿ãŒãæå®ããã€ã³ãã³ããéä¿¡ããŸãã ããšãã°ãonReceiveã®ã³ãŒããæã€ã¬ã·ãŒããŒããããŸãã
@Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals("simple_intent_action")){ Log.d("SimpleReceiver", "Got intent with action: " + action + " and string extra: " + intent.getStringExtra("string_extra")); } }
é©åãªIntentFilterãæå®ããŠReceiverãç»é²ããŸãã
IntentFilter simpleFilter = new IntentFilter("simple_intent_action");
次ã«ããã©ã°ã€ã³ã§ãããŒããã£ã¹ãã¡ãã»ãŒãžãéä¿¡ããã«ã¯ãã¢ã¯ã·ã§ã³ãã£ãŒã«ãã§ãsimple_intent_actionããæå®ãã ãAdd extraããã¿ã³ãã¯ãªãã¯ããŠã ãstring_extraãããŒãšããã¹ãã§ãšã¯ã¹ãã©ãè¿œå ããŸãã ããããŒããã£ã¹ããéä¿¡ããã¯ãªãã¯ããŠããã°ã§æ¬¡ã®ãããªãã®ã確èªããŸãã
Got intent with action: simple_intent_action and string extra: Awesome string
- æã¡äžã掻åããµãŒãã¹MessageActivityãå®è¡ããå¿ èŠããããšããŸããäžæ¹ãMessageActivityã¯ãäœææã«ãæå³ããlongåã®è¡šç€ºã¡ãã»ãŒãžã®IDãååŸããŸãã idã®è¿œå ããŒã¿ã®ããŒããmessageIdããšããŸãã
ã³ã³ããŒãã³ãããã«ãŒã®ãã©ã°ã€ã³ã§ãã®ã¢ã¯ãã£ããã£ãéå§ããã«ã¯ãMessageActivityãéžæãããŠãŒã¶ãŒãèªåçã«è¿œå ãããããšã確èªããŸãã 次ã«ãããŒãmessageIdããšç®çã®å€ãæã€longåã®ãªããžã§ã¯ããè¿œå ããŸãã ãã¹ãŠã®æºåãæŽã£ããã ãã¢ã¯ãã£ããã£ãéå§ããã¯ãªãã¯ããŠãæå®ãããã¡ãã»ãŒãžã衚瀺ãããèµ·åæžã¿ã¢ã¯ãã£ããã£ã確èªããŸãã
onCreateã¡ãœããã®MessageActivityããã°ãæžã蟌ãå ŽåïŒ
Log.d(LOG_TAG, "Message id: " + getIntent().getLongExtra("messageId", -1));
ãã®åŸããã°ã«è¡šç€ºãããŸãïŒ
Message data: 234
- ç¬èªã®ããŒã¿ã¹ããŒãã®ãã¹ãããšãã°ããã©ãŒã ã®ç¹å®ã®ãªã³ã¯ãã¯ãªãã¯ããŠãã¢ããªã±ãŒã·ã§ã³ã®èªåèµ·åãå®è£ ããå¿ èŠããããŸã
myhost.com...
/ãã®ããã«ããããã§ã¹ãã§ãç®çã®ã¢ã¯ãã£ããã£ã«æ¬¡ã®ã€ã³ãã³ããã£ã«ã¿ãŒãæå®ããŸãã
<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="http" android:host="myhost.com"/> </intent-filter>
åŒã³åºãããã¢ã¯ãã£ããã£ã®onCreateã¡ãœããã§ããã°ãè¿œå ããŸãã
Log.d("TAG", "Intent data: " + getIntent().getDataString());
次ã«ããã¹ãã®ããã«ããã©ã°ã€ã³ã§actionïŒ android.intent.action.VIEW ãdataïŒ myhost.com/some_dataãæå®ã㊠ã Start Activityãã¯ãªãã¯ããŸãã ããã€ã¹ã§ãã¢ããªã±ãŒã·ã§ã³ãéžæããŠãã°ã確èªããŸãã
Intent data: myhost.com/some_data
ãTest myhost.com/some_data ããšããããã¹ããå«ãSMSãéä¿¡ãããªã³ã¯ãã¯ãªãã¯ããŠãåãããšãããããŸã ã - Google Cloud MessagingïŒGCMïŒãµãŒãã¹ã®ãã¹ãGCMã¡ãã»ãŒãžãåä¿¡ããç¹å®ã®ã¯ã©ã¹GcmBroadcastReceiverããããšããŸãã ãããã§ã¹ããžã®ãã®ãããªã³ã³ããŒãã³ãã®ç»é²ã¯ãåä¿¡è èš±å¯
android:permission="com.google.android.c2dm.permission.SEND"
æ瀺ãšãšãã«æž¡ãããŸãandroid:permission="com.google.android.c2dm.permission.SEND"
android:permission="com.google.android.c2dm.permission.SEND"
ã
æ®å¿µãªããããã¹ãäžã«ãã®æš©éãåé€ããå¿ èŠããããŸããããããªããšããã©ã°ã€ã³ããã®æå³ãåŠçãããŸããã ãããã§ã¹ãã®ãã£ã«ã¿ãŒã¯æ¬¡ã®ããã«ãªããŸãã
<intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="com.your.package" /> </intent-filter>
GCMã€ã³ãã³ãã®æ¬æã§ã ãã¡ãã»ãŒãžãããŒãå«ãæååã§æž¡ãããjsonã«ããŒã¿ãããããšãæ³å®ããŠãããšããŸãã
ãã©ã°ã€ã³ã«ã€ã³ãã³ããäœæããŸãããã®ããã«ãã¢ã¯ã·ã§ã³com.google.android.c2dm.intent.RECEIVEãšã«ããŽãªcom.your.packageã瀺ããŸãã ããŒããmessage_typeãã§å€ããgcmãã® Stringåã®ãã£ãŒã«ããšãããŒããmessageãã§å éšã«jsonãæž¡ãããStringåã®ãã£ãŒã«ããè¿œå ããŸã ã
ããããŒããã£ã¹ããéä¿¡ããã¯ãªãã¯ãããšãå®éã®GCMã¡ãã»ãŒãžãåŠçããããã«ãã¢ããªã±ãŒã·ã§ã³ã¯ãããŒããã£ã¹ããåä¿¡ããŠââåŠçããŸãã
ã芧ã®ãšãããå Žåã«ãã£ãŠã¯ããã©ã°ã€ã³ã䜿çšããããšã§äžåçãªæéæ倱ãå€§å¹ ã«æžããããšãã§ãããã©ã°ã€ã³ãéçºè ã®æŠåšåº«ã§æ¬åœã«åœ¹ç«ã€ããŒã«ã«ãªãããšãé¡ã£ãŠããŸãã
ãã©ã°ã€ã³éçºããã»ã¹èªäœã«ã€ããŠã¯ããã©ã°ã€ã³ã«åã蟌ãŸããã¢ã€ãã¢èªäœãå®è£ ããè€éãã«ãã£ãŠè€éãã決ãŸããšèšããŸãã ç°å¢ãæºåããŠçŽæ¥èšå®ããŠãåé¡ã¯çºçãããã€ã³ã¿ãŒãããã«ã¯å€ãã®æ å ±ããããŸãã ç°å¢ãã»ããã¢ããããããã«å¿ èŠãªæé ãç°¡åã«èª¬æããŸãã
- AndroidStudioã«äœ¿çšãããIDEAãã©ã³ããæ¢ããŠããŸãã ãããè¡ãã«ã¯ã apiVersion = "135.1286"ã«é¡äŒŒããAndroidStudioApplicationInfo.xmlã®è¡ãæ¢ãããããããã©ã³ãçªå·ãååŸããŸããç§ã®å Žåã¯135ã§ããAndroidStudioApplicationInfo.xmlã§ã¯ ã次ã®ãªã³ã¯ã確èªããŸãã idea133 / adt-branding / src / idea / AndroidStudioApplicationInfo.xml
åœç¶ããªã³ã¯ã¯å³å¯ã«ã¯æšå¥šãããŠããŸãããandroid.googlesource.com/ platform / tools / adt / ideaãžã®ãªã³ã¯ãããªãã³ã°ããŠAndroidStudioã®ç®çã®ããŒãžã§ã³ã«ç§»åãããã©ã«ããŒãæ©ããŠãå¿ èŠãªAndroidStudioApplicationInfo.xmlãç°¡åã«èŠã€ããããšãã§ããŸãã - 説æã«åŸã£ãŠIntelliJ Community EditionãããŠã³ããŒããã以åã«èŠã€ãããã©ã³ãã«åãæ¿ããŸãïŒ135ãæã£ãŠããŸãïŒ
- ãã©ã°ã€ã³éçºçšã®SDKãäœæãã
- æåŸãã2çªç®ã®ã¹ãããïŒAndroidãã©ã°ã€ã³ã®äŸåé¢ä¿ãSDKã®ã¯ã©ã¹ãã¹ã»ã¯ã·ã§ã³ã«è¿œå ããŸãã
-
org.jetbrains.android
ã«org.jetbrains.androidäŸåé¢ä¿ãè¿œå ããŸãorg.jetbrains.android
次ã«ãIntelliJãã©ãããã©ãŒã ãã©ã°ã€ã³ã¿ã€ãã®æ°ãããããžã§ã¯ããäœæããŸããIntelliJãã©ãããã©ãŒã SDKããã¥ã¡ã³ã ã Open APIããã³ãã©ã°ã€ã³éçºã³ãã¥ãã㣠ãããã«é¢ããå€æ°ã®èšäºãgithubã®äŸã䜿çšããŠããã©ã°ã€ã³ã®äœæãå®å šã«éå§ã§ããŸãã
UIèŠçŽ ã®swingãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠãtoolWindowã³ã³ããŒãã³ãã«åºã¥ããŠãã©ã°ã€ã³ãå®è£ ããããšã«ããŸããã Javaã®UIãç¹ã«Swingã§ã®äœæ¥ã«åºäŒã£ãããšããªã人ãšããŠãç§ã¯ãã®æ©èœã«å°ãé©å¿ããå¿ èŠããããŸããããç¹å¥ãªå°é£ã¯ãããŸããã§ããã ãããããAndroidã®UIã§ã®äœæ¥ãšã®é¡äŒŒæ§ã圹ç«ã£ãã§ãããã
ããã«ãadbãæäœããããã«ãAndroid SDKã®äžéšã§ããããã¹$ {SDK_HOME} / sdk / tools / libã«ããddmlibã©ã€ãã©ãªãéåžžã«åœ¹ç«ã¡ãŸããã ãã®ãã£ã¬ã¯ããªã«ã¯ä»ã«ãå€ãã®jarããããŸãã®ã§ãã芧ã«ãªãããšããå§ãããŸããçªç¶ãäžéšã®ã©ã€ãã©ãªãã¿ã¹ã¯ã®è§£æ±ºãç°¡çŽ åããŸãã ãŸãã org.jetbrains.androidããã±ãŒãžã«ã泚ç®ããŸããããã¯ãAndroidããŒãã䜿çšããéã«éåžžã«åœ¹ç«ã¡ãŸãã ãã®ããã圌ã®å©ããåããŠãAndroid SDKãã£ã¬ã¯ããªãžã®ãã¹ãååŸãããããã±ãŒãžããããã§ã¹ãããååŸãããŸããã 念ã®ããããã©ã°ã€ã³ã¯Androidå€æ°ãžã®ãã¹ãANDROID_HOMEç°å¢å€æ°ã§æ€çŽ¢ããåã®æé ã§SDKãèŠã€ãããªãã£ãå Žåã«ãã¹ãæåã§èšå®ããæ©èœãæäŸããŸãã adbã䜿çšããå Žåããã©ã°ã€ã³ã¯ã³ã³ãœãŒã«ã®å¿çã解æããŸããããã«ãããå Žåã«ãã£ãŠã¯éä¿¡ã倱æããããšãç解ãã察å¿ãããšã©ãŒãè¿ãããšãã§ããŸãã
ã³ãã³ãã®å±¥æŽãä¿åããããã«ããã©ã°ã€ã³èšå®ã«ä¿åãããŠããjsonã䜿çšãããŸãã
Windowsç°å¢ã§ã®ãã©ã°ã€ã³ã®éçºã«é¢é£ããŠãOS Xã§ãã©ã°ã€ã³ãèµ·åãããšãã«ã NoSuchMethodExceptionã§ã¯ã©ãã·ã¥ããã±ãŒã¹ãããã€ããããŸããã ãã®çç±ã¯ãWindowsçšã®JavaãšOS Xã®éãã§ããOSXã§äœæ¥ããŠããååã劚害ãããããã䜿çšããŠãããã°ããå¿ èŠããããŸããã
ãã©ã°ã€ã³ããã¹ãããã³ãããã°ããåŸãjetbrainsãã©ã°ã€ã³ãªããžããªã«è¿œå ããããã«ã¢ããªã±ãŒã·ã§ã³ãéä¿¡ãããŸãããæåã®ãã¡ã€ã«ããŒãžã§ã³ã¯ããã«ã¢ãã¬ãŒã·ã§ã³ãçµãŠãã¢ããªã±ãŒã·ã§ã³ã®éä¿¡åŸ1æé以å ã«ããŠã³ããŒãã§ããŸããã
çµè«ïŒ
é©ããããšã«ããã©ã°ã€ã³ãæžããŠãé倧ãªæè¡çãªåé¡ã¯çºçããŸããã§ããã ããããããªãŒãã³ã§äŸ¿å©ãªããŒã«ãäœæããããAndroidã®éçºããåãæ¿ãã£ãããŸãã¯åãªãã€ã³ã¹ãã¬ãŒã·ã§ã³ãå¿ èŠã«ãªã£ãã®ãããããŸãããããã©ã°ã€ã³ã®éçºã¯é埳çãªæ¹åãããããããã°ããã®éãè¿œå ã®ååããªå§¿å¢ã§å é»ãããŸããã ãã©ã°ã€ã³ã¯ãã§ã«ç¬ç«ããŠãããéåžžã«æ©èœçã§ããããã©ã°ã€ã³ã§ã®äœæ¥ã¯ãŸã å®äºããŠããŸãããæ¹åãã¹ãç¹ããããä»ã®æçšãªãã©ã°ã€ã³ã®ã¢ã€ãã¢ããããŸãã ãã©ã°ã€ã³ã®Todoã·ãŒãïŒ
- ãã«ããéå§ããŠãããžã§ã¯ããèµ·åããæ©èœãè¿œå ããèµ·åãããŠããã¢ã¯ãã£ããã£ãšãã®ãã©ã¡ãŒã¿ãŒã瀺ããŸã
- GCMã¬ã·ãŒããŒããã®äžæçãªèš±å¯ã®åé€ããã€ãã¹ããŠã¿ãŠãã ãã
- ã€ã³ãã³ãParcelableãªããžã§ã¯ãã«è»¢éãµããŒããå®è£ ãã
- Samsungããã€ã¹ã§éãšã¯ã¹ããŒãã³ã³ããŒãã³ããèµ·åããåé¡ã解決ãã
Githubãã©ã°ã€ã³ïŒ github.com/WeezLabs/idea-intent-sender-plugin
ãã°ãã©ãã«ãŒãšããŠã github issues ïŒ github.com/WeezLabs/idea-intent-sender-plugin/issuesãå®å šã«äœ¿çšã§ããŸãã
ãã©ã°ã€ã³ãæ¹åããããã®ææ¡ããã®å®è£ ã«é¢ãã質åã«å ããŠã䜿çšæ¹æ³ãæããã§ã¯ãªããªã¹ããè£å ã§ããããšãå¬ããæããŸãã