คำถามติดแท็ก android-intent

คำถามเกี่ยวกับการใช้งาน Intent, Extent Intent และ Intent ที่รอการอนุมัติในทางปฏิบัติและขั้นสูงเพื่อเริ่มต้นกิจกรรมบริการหรือเพื่อตอบสนองต่อระบบหรือแอปพลิเคชันเหตุการณ์ / การแจ้งเตือนผ่าน BroadcastReceiver (อ้างถึงข้อมูลสำหรับความคุ้นเคยขั้นพื้นฐาน)

8
เจตนา - ถ้ากิจกรรมกำลังดำเนินอยู่ให้นำมาไว้ข้างหน้ามิฉะนั้นจะเริ่มกิจกรรมใหม่ (จากการแจ้งเตือน)
แอพของฉันมีการแจ้งเตือนซึ่งชัดเจนว่าไม่มีการตั้งค่าสถานะใด ๆ เริ่มต้นกิจกรรมใหม่ทุกครั้งดังนั้นฉันจึงได้รับกิจกรรมเดียวกันหลายรายการที่ทำงานอยู่ด้านบนซึ่งกันและกันซึ่งผิดปกติ สิ่งที่ฉันต้องการให้ทำคือการนำกิจกรรมที่ระบุในการแจ้งเตือนที่ค้างอยู่ไปข้างหน้าถ้ามันกำลังทำงานอยู่หรือไม่ก็เริ่มทำ จนถึงตอนนี้เจตนา / ความตั้งใจที่รอดำเนินการสำหรับการแจ้งเตือนที่ฉันมีอยู่ private static PendingIntent prepareIntent(Context context) { Intent intent = new Intent(context, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); } และแปลกบางครั้งมันใช้งานได้บางครั้งมันไม่ ... ฉันรู้สึกว่าฉันได้ลองทุกชุดผสมกันแล้ว

3
PendingIntent ไม่ส่ง Intent พิเศษ
ฉันMainActicity จะเริ่มต้นRefreshServiceด้วยการIntentที่มีความพิเศษที่เรียกว่าbooleanisNextWeek ของฉันRefreshServiceทำให้Notificationซึ่งเริ่มต้นของฉันMainActivityเมื่อผู้ใช้คลิกที่มัน ลักษณะเช่นนี้: Log.d("Refresh", "RefreshService got: isNextWeek: " + String.valueOf(isNextWeek)); Intent notificationIntent = new Intent(this, MainActivity.class); notificationIntent.putExtra(MainActivity.IS_NEXT_WEEK, isNextWeek); Log.d("Refresh", "RefreshService put in Intent: isNextWeek: " + String.valueOf(notificationIntent.getBooleanExtra(MainActivity.IS_NEXT_WEEK,false))); pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); builder = new NotificationCompat.Builder(this).setContentTitle("Title").setContentText("ContentText").setSmallIcon(R.drawable.ic_notification).setContentIntent(pendingIntent); notification = builder.build(); // Hide the notification after its selected notification.flags |= …

4
ความแตกต่างและเวลาที่จะใช้ getApplication (), getApplicationContext (), getBaseContext () และ someClass.this
ฉันใหม่เพื่อ Android และฉันพยายามที่จะเข้าใจความแตกต่างระหว่างgetApplication(), getApplicationContext() getBaseContext(), getContext()และsomeClass.thisโดยเฉพาะอย่างยิ่งเมื่อมีการใช้วิธีการเหล่านี้ในสายรหัสต่อไปนี้: เมื่อฉันเปิดขนมปังปิ้งอะไรคือความแตกต่างระหว่างสิ่งเหล่านี้และในกรณีใดที่ฉันจะใช้? Toast.makeText(LoginActivity.this, "LogIn successful", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplication(), "LogIn successful", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "LogIn successful", Toast.LENGTH_SHORT).show(); Toast.makeText(getBaseContext(), "LogIn successful", Toast.LENGTH_SHORT).show(); เหมือนกันกับความตั้งใจ: Intent intent = new Intent(getApplicationContext(), LoginActivity.class); Intent intent = new Intent(MenuPagina., LoginActivity.class); Intent intent = new Intent(getBaseContext(), LoginActivity.class); Intent intent = new Intent(getApplication(), LoginActivity.class);

6
จะตรวจสอบได้อย่างไรว่าเจตนาสามารถจัดการได้จากกิจกรรมบางอย่าง?
ฉันมีวิธีนี้แล้ว แต่มันก็เหมือนมีบางอย่างหายไป ตัวอย่างเช่นฉันมีไฟล์ /sdcard/sound.3ga ที่ส่งคืนเท็จ (เช่นไม่มีกิจกรรมใดที่สามารถจัดการไฟล์ประเภทนี้ได้) แต่เมื่อฉันเปิดจากตัวจัดการไฟล์มันจะเปิดขึ้นพร้อมกับเครื่องเล่นสื่อโดยไม่มีปัญหา ฉันคิดว่าเจตนานี้ยังไม่สมบูรณ์และฉันต้องทำอะไรเพิ่มเติมเพื่อให้ตัวเองแน่ใจว่าตัวแปร handlerExists จะเป็นเท็จเท่านั้นหากไม่มีกิจกรรมที่สามารถจัดการกับเจตนานี้ได้ PackageManager pm = getPackageManager(); Intent intent = new Intent(android.content.Intent.ACTION_VIEW); String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(new File(uriString)).toString()); String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); intent.setDataAndType(Uri.fromFile(new File(uriString)),mimetype); boolean handlerExists = intent.resolveActivity(pm) != null;

2
BroadcastReceiver พร้อมตัวกรองหลายตัวหรือหลาย BroadcastReceivers?
ฉันมีกิจกรรม Android ที่ต้องรับการออกอากาศสองรายการที่แตกต่างกัน แนวทางปัจจุบันของฉันคือการมีซิงเกิลBroadcastReceiverภายในกิจกรรมและรับทั้งการออกอากาศด้วย: public class MyActivity extends Activity { private MyActivity.BroadcastListener mBroadcastListener; private boolean mIsActivityPaused = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mylayout); // Create the broadcast listener and register the filters mIsActivityPaused = false; mBroadcastListener = new BroadcastListener(); IntentFilter filter = new IntentFilter(); filter.addAction(Params.INTENT_REFRESH); filter.addAction(Params.INTENT_UPDATE); registerReceiver(mBroadcastListener, …

22
ส่งข้อความผ่าน WhatsApp
เนื่องจากฉันพบโพสต์เก่า ๆ ที่บอกว่า whatsapp ไม่รองรับสิ่งนี้ฉันจึงสงสัยว่ามีอะไรเปลี่ยนแปลงหรือไม่และมีวิธีเปิด 'แชท' ของ whatsapp ด้วยหมายเลขที่ฉันส่งผ่านความตั้งใจหรือไม่?

11
การเปลี่ยนตำแหน่งของ Dialog บนหน้าจอ android
ฉันทำง่ายAlertDialogในของฉันกิจกรรม : View view = layoutInflater.inflate(R.layout.my_dialog, null); AlertDialog infoDialog = new AlertDialog.Builder(MyActivity.this) .setView(view) .create(); infoDialog.show(); ด้วยรหัสด้านบนกล่องโต้ตอบจะแสดงที่ (เกี่ยวกับ) ตรงกลางของหน้าจอ ฉันสงสัยว่าฉันจะปรับแต่งตำแหน่งกล่องโต้ตอบเพื่อให้แสดงภายใต้แถบการดำเนินการด้านบนได้อย่างไร (มีการเปลี่ยนแปลงแรงโน้มถ่วงหรืออะไรบางอย่างของกล่องโต้ตอบหรือไม่) และจะทำอย่างไรตามรหัสของฉัน ??

5
“ requestCode” ใช้สำหรับอะไรใน PendingIntent
พื้นหลัง: ฉันใช้ PendingIntent สำหรับการเตือนผ่าน AlarmManager ปัญหา: ตอนแรกฉันคิดว่าในการยกเลิกอันก่อนหน้านี้ฉันต้องระบุ requestCode ที่แน่นอนที่ฉันเคยใช้มาก่อนเพื่อเริ่มการปลุก แต่แล้วฉันก็พบว่าฉันคิดผิดตามที่API การยกเลิกบอก: ลบสัญญาณเตือนใด ๆ ที่มีเจตนาที่ตรงกัน การเตือนภัยไม่ว่าประเภทใดก็ตามที่มี Intent ตรงกับการเตือนนี้ (ตามที่กำหนดโดย filterEquals (Intent)) จะถูกยกเลิก ดูที่ " filterEquals " เอกสารระบุว่า: ตรวจสอบว่าเจตนาสองอย่างเหมือนกันสำหรับวัตถุประสงค์ของการแก้ไขเจตนา (การกรอง) หรือไม่ นั่นคือถ้าการกระทำข้อมูลประเภทคลาสและหมวดหมู่เหมือนกัน ข้อมูลนี้ไม่ได้เปรียบเทียบข้อมูลเพิ่มเติมใด ๆ ที่รวมอยู่ใน Intent เลยไม่เข้าใจว่า "requestCode" มีไว้เพื่ออะไร ... คำถาม: "requestCode" ใช้ทำอะไร จะเกิดอะไรขึ้นถ้าฉันสร้างการเตือนภัยหลายรายการโดยใช้ "requestCode" เดียวกัน พวกเขาลบล้างกันและกัน?

20
เจตนาที่ชัดเจน
แอป Android ของฉันถูกเรียกโดยเจตนาที่ส่งผ่านข้อมูล (อยู่ระหว่างการพิจารณาในแถบสถานะ) เมื่อฉันกดปุ่มโฮมและเปิดแอปอีกครั้งโดยกดปุ่มโฮมค้างไว้มันจะเรียกเจตนาอีกครั้งและยังคงมีความพิเศษเหมือนเดิม @Override public void onSaveInstanceState(Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); } @Override public void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); } นี่คือรหัสที่ไม่ทำงานอย่างที่ควรจะเป็น String imgUrl; Bundle extras = this.getIntent().getExtras(); if(extras != null){ imgUrl = extras.getString("imgUrl"); if( !imgUrl.equals(textView01.getText().toString()) ){ imageView.setImageDrawable( getImageFromUrl( imgUrl ) ); layout1.setVisibility(0); textView01.setText(imgUrl);//textview to hold the url } } …

7
ฉันจะแสดงเครื่องหมายใน Maps ที่เปิดตัวโดย Geo URI Intent ได้อย่างไร
ฉันมีแอปพลิเคชันที่ต้องการแสดงสถานที่ต่างๆ (ทีละแห่งเลือกโดยการป้อนข้อมูลของผู้ใช้) โดยเปิดใช้ Google แผนที่ด้วยพิกัดทางภูมิศาสตร์ที่ระบุ ฉันกำลังใช้สิ่งนี้อยู่ (โดยมีค่า lat จริงและค่า long แน่นอน): Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?z=17")); startActivity(intent); ค่อนข้างตรงตามที่ฉันต้องการยกเว้นว่าจะไม่แสดงตัวบ่งชี้หรือเครื่องหมายสำหรับจุดที่ระบุ ศูนย์เฉพาะที่ตั้งเท่านั้น มีวิธีรับเครื่องหมายหรืออย่างอื่นโดยไม่ใช้ MapView หรือไม่?

3
การสกัดกั้นลิงก์จากเบราว์เซอร์เพื่อเปิดแอป Android ของฉัน
ฉันต้องการแจ้งให้แอปของฉันเปิดลิงก์เมื่อผู้ใช้คลิก URL ของรูปแบบที่กำหนดแทนที่จะอนุญาตให้เบราว์เซอร์เปิด อาจเกิดขึ้นเมื่อผู้ใช้อยู่บนหน้าเว็บในเบราว์เซอร์หรือในโปรแกรมรับส่งเมลหรือภายใน WebView ในแอปที่เพิ่งสร้างใหม่ ตัวอย่างเช่นคลิกลิงก์ YouTube จากที่ใดก็ได้ในโทรศัพท์คุณจะมีโอกาสเปิดแอป YouTube ฉันจะบรรลุสิ่งนี้สำหรับแอปของตัวเองได้อย่างไร

17
Kotlin Android เริ่มกิจกรรมใหม่
ฉันต้องการเริ่มกิจกรรมอื่นบน Android แต่ได้รับข้อผิดพลาดนี้: โปรดระบุการร้องขอตัวสร้าง ลักษณนาม 'Page2' ไม่มีวัตถุร่วม หลังจากสร้างอินสแตนซ์Intentคลาสแล้ว ฉันควรทำอย่างไรเพื่อแก้ไขข้อผิดพลาด รหัสของฉัน: class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } fun buTestUpdateText2 (view: View) { val changePage = Intent(this, Page2) // Error: "Please specify constructor invocation; // classifier 'Page2' does not have a companion object" startActivity(changePage) } …

13
Android วาดเส้นแนวนอนระหว่างมุมมอง
ฉันมีเค้าโครงของฉันดังนี้: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" style="@style/behindMenuItemLabel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="Twitter Feeds" android:textStyle="bold" /> <ListView android:id="@+id/list" android:layout_width="350dp" android:layout_height="50dp" /> <TextView android:id="@+id/textView1" style="@style/behindMenuItemLabel1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="1dp" android:text="FaceBook Feeds" /> <ListView android:id="@+id/list1" android:layout_width="350dp" android:layout_height="50dp" /> </LinearLayout> ความต้องการของฉันคือการวาดเส้นแนวนอนระหว่างTextViewและListView ใครสามารถช่วย?


11
ตรวจสอบว่ามีการติดตั้งแอปพลิเคชัน - Android
ฉันกำลังพยายามติดตั้งแอปจาก Google Play ฉันเข้าใจว่าเมื่อเปิด URL ของ Google Play Store จะเป็นการเปิด Google Play และเมื่อฉันกดปุ่มย้อนกลับกิจกรรมจะดำเนินต่อไป Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(appURL)); marketIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); startActivity(marketIntent); เมื่อฉันกลับไปที่กิจกรรมฉันลองโทรonResume()ไปที่สิ่งนี้เพื่อตรวจสอบว่าติดตั้งแอพแล้วหรือยัง แต่ฉันได้รับข้อผิดพลาด: @Override protected void onResume() { super.onResume(); boolean installed = false; while (!installed) { installed = appInstalledOrNot(APPPACKAGE); if (installed) { Toast.makeText(this, "App installed", Toast.LENGTH_SHORT).show(); } } …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.