Androidã¢ããªã±ãŒã·ã§ã³ãéçºãããšããå€ãã®å Žåãäœæ¥ãæé©åããŠæéãç¯çŽããããã«adbã«é Œããªããã°ãªããŸããã Adbã¯ãããšãã°ãé·ãã¢ã¯ãã£ããã£ãã§ãŒã³ããã€ãã¹ããŠãç®çã®ã¢ã¯ãã£ããã£ãããã«å®è¡ããããå€éšæ¡ä»¶ãæºããããã®ãåŸ
ããã«ãããŒããã£ã¹ãã¡ãã»ãŒãžãéä¿¡ãããã§ããå¯äžã®ããŒã«ã§ãã adbã䜿çšãããšã端æ«ã䜿çšããŠé·ãã³ãã³ããçæãããã¹ãŠã®äžäŸ¿ãã䌎ããããã€ã¹ã«ã€ã³ãã³ããéä¿¡ããéã«adbã®åŠçãé«éåããã³ç°¡çŽ åãããã©ã°ã€ã³ãäœæããããšã«ãªããŸããã
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ãå®å
šã«äœ¿çšã§ããŸãã
ãã©ã°ã€ã³ãæ¹åããããã®ææ¡ããã®å®è£
ã«é¢ãã質åã«å ããŠãäœ¿çšæ¹æ³ãæããã§ã¯ãªããªã¹ããè£å
ã§ããããšãå¬ããæããŸãã