رفتن به مطلب
  • 1

طراحی اینتنت


farsroom

سوال

کسی هست که بداند چطوری میشود برای اپلیکیشن اینتنت ( Intent ) طراحی کرد؟

برای بیسیک4اندروید.

مثلا بوسیله اپلیکیشن شماره یک ،

یک اکتیویتی در اپلیکیشن شماره دو را نمایش دهد.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

6 پاسخ به این سوال تاکنون داده شده است

ارسال های توصیه شده

ممنون از راهنمایی.

همه چیز درست بود فقط چون من تازه کارم هر راهی که بگی رفتم ولی نتونستم مقدار value را دریافت کنم

ممنون میشم اگه راهنمایی را کامل کنید

خواهش میکنم.

برای گرفتن اون مقدار ها یه متد خاصی داره اینتنت ولی این اینتنت بیسیک نداره. منم یادم رفته دقیقا... باید از SMIntent، کتابخانه ای که یکی از بچه ها زحمتشو کشیده و کامل از جاوا رپ کرده استفاده کنید.

حالا اون به کنار یک روش دیگه ای میگم که یه اینتنت اختصاصی بسازید و با برادکست صداش بزنید. خیلی بهتره.

هم اون روش رو پس یاد گرفتیم هم این یکی رو یاد میگیریم که هردو بکار میاد. برای اولی مثل ساخت قسمت نظرات و... بازار. روش دومی هم که میخوام بگم مثل برنامه MXPlayer که اینطوری اینتنت ساخته.

 

 

داخل پروژه اپ 2 که قراره اینتنت رو دریافت کنه یه سرویس میسازیم و یه اسم براش میذاریم، مثلا: receiver

بعد به منیفست اش اینو اضافه میکنیم:

AddReceiverText(receiver,  
    <intent-filter>
        <action android:name="b4a.example.dooo.MY_ACTION" />
    </intent-filter>
)

receiver که اسم همون سرویسه، بعدش قسمت اول اون اکشن هم که پکیج نیم برنامه هست، MY_ACTION هم یه اکشنی که تعریف کردیم تا اپ ما این رو بپذیره. میتونید هرچندتا که میخواین اضافه کنید به همین ترتیب با نام های مختلف.

 

بعد توی رویداد StartService این سرویس اون اکشن مورد نظر که صدا زده شده رو نمایش میدیم:

Sub Service_Start (StartingIntent As Intent)
	ToastMessageShow(StartingIntent.Action,True)
End Sub

دیدید خیلی راحت اکشن رو گرفتیم و Toast دادیم. حالا همینجا میتونید شرط بذارید اگه اکشن b4a.example.dooo.MY_ACTION بود بیاد فلان اکتیویتی رو استارت کنه و چیز دیگه ای بود کار دیگه انجام بده...

حالا میریم جلوتر میگم که چطور مقدار هم بدیم و با مقدار هاش بازی کنیم.

 

 

حالا میریم سراغ اپ 1 و با اون اپ2 رو صدا میزنیم:

Sub Activity_Create(FirstTime As Boolean)

	Dim j As JavaObject : j.InitializeContext
	
	Dim intent1 As Intent
	intent1.Initialize("b4a.example.dooo.MY_ACTION","")
	j.RunMethod("send",Array As Object(intent1))
	

End Sub
#if java
import android.content.Intent;

	public void send(Intent intent){
		sendBroadcast(intent);
	}
#end if

این کدهارو میبینید تعجب نکنید. چون بیسیک متد sendBroadcast نداشت من با جاوا ایجادش کردم با با این کد اجراش کردم:

Dim j As JavaObject : j.InitializeContext
	
	Dim intent1 As Intent
	intent1.Initialize("b4a.example.dooo.MY_ACTION","")
	j.RunMethod("send",Array As Object(intent1))

دیدید خیلی راحت اکشن b4a.example.dooo.MY_ACTION رو صدا زدم و اون اپ هم که روی اون دستگاه نصبه بهم ToastMessage میده.

 

 

حالا میتونید بازهم مثل مورد قبلی اختصاصیش کنید و یک مقدار هایی رو تعیین بکنید موقع صدا زدن:

	Dim j As JavaObject : j.InitializeContext
	
	Dim intent1 As Intent
	intent1.Initialize("b4a.example.dooo.MY_ACTION","")
	
	intent1.PutExtra("name","pejman") 'اضافه کردن مقدار'
	intent1.PutExtra("family","nikravan") 'اضافه کردن مقدار'
	
	j.RunMethod("send",Array As Object(intent1))

بعد کافیه توی سرویس اپ 2 این مقدار هارو از اینتنت بگیریم:

Sub Service_Start (StartingIntent As Intent)
	Dim name As String=StartingIntent.GetExtra("name")
	Dim family As String=StartingIntent.GetExtra("family")
	
	If name="pejman" Then
		StartActivity(Main)
	End If
End Sub

من هم name و هم family رو گرفتم و یه شرط گذاشتم الکی برای تست... به همین راحتی.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام.

قطعا اگه میخواید به وسیله ی اپ1 و یا حالا هر اپی که اینتنت شمارو داشته باشه باهاش صداش بزنه و یک اکتیویتی از اپ2 اجرا بشه. باید این امکان رو به منیفست اپ2 بدید.

میشه تقریبا مثل بازار که یک لینک داره و با استفاده از اون و اکشن ACTION_VIEW قسمت نظرات رو باز میکنیم.

 

اگه همینو میخواین...

 

میتونید به منیفست اپ 2 اینو اضافه کنید تا یک اینتنت یا لینک اختصاصی ساخته بشه با پروتکل pejman مثلا...

AddActivityText(Main,"<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="pejman"/> 
</intent-filter>")

دیدین برای بازار میذاریم bazaar:// ، اینجا هم باید بذاریم pejman://

اکتیویتی هم اسمشو مشخص کردیم Main، یعنی به محض استارت شدن اینتنت از یک اپ دیگه، اکتیویتی Main اپ 2 باز بشه.

 

حالا میریم مثلا توی اپ 1 و میخوایم باهاش اکتیویتی Main اپ 2 رو باز کنیم، کافیه این کد رو بنویسیم:

	Dim intent1 As Intent
	intent1.Initialize(intent1.ACTION_VIEW,"pejman://value?=test")
	StartActivity(intent1)

به این صورت خیلی راحت باز میشه.

 

ولی حالا میشه اینو اختصاصی ترش کرد و کارای جالب تری انجام داد. جاوا یه رویدادی داره به نام activity_Result. توی بیسیک یادم رفته ولی اگه خواستین روش کار میکنم. میشه مثلا تعیین کرد که اینتنت دریافتی اگه ACTION_EDIT بود بیاد مثلا صفحه نظرات رو باز کنه یا اگه VIEW بود کار دیگه ای بکنه. (البته اینو هم بگم که باید تو منیفست هم تعریف بشه که اینتنت ما EDIT یا اکشن های دیگه رو بپذیره وگرنه اررور میده)

 

اون value=?test هم که میبینید همینطوری گذاشتم. اونا هم استفاده های خودشون رو دارن که بازهم باید با دریافت StartingIntent از اکتیویتی اونارو از اینتنت استخراج کنیم و مقدار هاشو بیرون بیاریم.

مثلا میتونیم شرط بذاریم اگه value=فلان بود یکاری انجام بده. یا مثل بازار که مقدار خودش رو پکیج نیم برنامه قرار داده.

ممنون از راهنمایی.

همه چیز درست بود فقط چون من تازه کارم هر راهی که بگی رفتم ولی نتونستم مقدار value را دریافت کنم

ممنون میشم اگه راهنمایی را کامل کنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در در 1395/10/13, 15:49:26، rasul23 گفته است :

من اگه بخام زمانی که روی یک لینک که با http یا https شروع شده کلیک میشه برنامه ام باز بشه

در بخش مشخص کردن schme بجای pejman عبارت https و http رو بدید:

  <data android:scheme="http"/> 
<data android:scheme="https"/> 

 

در در 1395/10/13, 15:49:26، rasul23 گفته است :

مقدار اون لینک رو توی یک تست مسیج نشون بده باید چکار کنم

در رویداد activity_create اکتیویتی ای که مشخص کردین به محض کلیک روی لینک اجرا بشه به این صورت میتونید آدرس لینک رو بگیرید:

Sub Activity_Create(FirstTime As Boolean)
	
	Log( Activity.GetStartingIntent.GetData )
End Sub

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام 

من اگه بخام زمانی که روی یک لینک که با http یا https شروع شده کلیک میشه برنامه ام باز بشه و مقدار اون لینک رو توی یک تست مسیج نشون بده باید چکار کنم

لطفا راهنماییم کنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام.

قطعا اگه میخواید به وسیله ی اپ1 و یا حالا هر اپی که اینتنت شمارو داشته باشه باهاش صداش بزنه و یک اکتیویتی از اپ2 اجرا بشه. باید این امکان رو به منیفست اپ2 بدید.

میشه تقریبا مثل بازار که یک لینک داره و با استفاده از اون و اکشن ACTION_VIEW قسمت نظرات رو باز میکنیم.

 

اگه همینو میخواین...

 

میتونید به منیفست اپ 2 اینو اضافه کنید تا یک اینتنت یا لینک اختصاصی ساخته بشه با پروتکل pejman مثلا...

AddActivityText(Main,"<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="pejman"/> 
</intent-filter>")

دیدین برای بازار میذاریم bazaar:// ، اینجا هم باید بذاریم pejman://

اکتیویتی هم اسمشو مشخص کردیم Main، یعنی به محض استارت شدن اینتنت از یک اپ دیگه، اکتیویتی Main اپ 2 باز بشه.

 

حالا میریم مثلا توی اپ 1 و میخوایم باهاش اکتیویتی Main اپ 2 رو باز کنیم، کافیه این کد رو بنویسیم:

	Dim intent1 As Intent
	intent1.Initialize(intent1.ACTION_VIEW,"pejman://value?=test")
	StartActivity(intent1)

به این صورت خیلی راحت باز میشه.

 

ولی حالا میشه اینو اختصاصی ترش کرد و کارای جالب تری انجام داد. جاوا یه رویدادی داره به نام activity_Result. توی بیسیک یادم رفته ولی اگه خواستین روش کار میکنم. میشه مثلا تعیین کرد که اینتنت دریافتی اگه ACTION_EDIT بود بیاد مثلا صفحه نظرات رو باز کنه یا اگه VIEW بود کار دیگه ای بکنه. (البته اینو هم بگم که باید تو منیفست هم تعریف بشه که اینتنت ما EDIT یا اکشن های دیگه رو بپذیره وگرنه اررور میده)

 

اون value=?test هم که میبینید همینطوری گذاشتم. اونا هم استفاده های خودشون رو دارن که بازهم باید با دریافت StartingIntent از اکتیویتی اونارو از اینتنت استخراج کنیم و مقدار هاشو بیرون بیاریم.

مثلا میتونیم شرط بذاریم اگه value=فلان بود یکاری انجام بده. یا مثل بازار که مقدار خودش رو پکیج نیم برنامه قرار داده.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

مهمان
این موضوع برای عدم ارسال قفل گردیده است.
  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...